From 79336d46c5f7575619992e5d004d561166751c36 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Mon, 4 Apr 2022 15:52:31 +0200 Subject: [PATCH 01/83] [Clean Context] first naive implementation of a functionality to clean not wanted contextes from one result. This implementation simply verifies the main title of the results start with a given string --- .../oa/graph/clean/CleanContextSparkJob.java | 113 +++++++++++++ .../graph/input_clean_context_parameters.json | 37 ++++ .../dhp/oa/graph/clean/CleanContextTest.java | 159 ++++++++++++++++++ .../clean/publication_clean_context.json | 7 + 4 files changed, 316 insertions(+) create mode 100644 dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java create mode 100644 dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json create mode 100644 dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java create mode 100644 dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java new file mode 100644 index 000000000..b20dcb67b --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java @@ -0,0 +1,113 @@ +package eu.dnetlib.dhp.oa.graph.clean; + +import com.fasterxml.jackson.databind.ObjectMapper; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.common.HdfsSupport; +import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.Context; +import eu.dnetlib.dhp.schema.oaf.Oaf; +import eu.dnetlib.dhp.schema.oaf.OafEntity; +import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.utils.ISLookupClientFactory; +import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; +import org.apache.commons.io.IOUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.function.MapFunction; +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.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +public class CleanContextSparkJob implements Serializable { + private static final Logger log = LoggerFactory.getLogger(CleanContextSparkJob.class); + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public static void main(String[] args) throws Exception { + + String jsonConfiguration = IOUtils + .toString( + CleanContextSparkJob.class + .getResourceAsStream( + "/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json")); + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + parser.parseArgument(args); + + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + + String inputPath = parser.get("inputPath"); + log.info("inputPath: {}", inputPath); + + String workingPath = parser.get("workingPath"); + log.info("workingPath: {}", workingPath); + + String contextId = parser.get("contextId"); + log.info("contextId: {}", contextId); + + String verifyParam = parser.get("verifyParam"); + log.info("verifyParam: {}", verifyParam); + + + String graphTableClassName = parser.get("graphTableClassName"); + log.info("graphTableClassName: {}", graphTableClassName); + + Class entityClazz = (Class) Class.forName(graphTableClassName); + + + SparkConf conf = new SparkConf(); + runWithSparkSession( + conf, + isSparkSessionManaged, + spark -> { + + cleanContext(spark, contextId, verifyParam, inputPath, entityClazz, workingPath); + }); + } + + private static void cleanContext(SparkSession spark, String contextId, String verifyParam, String inputPath, Class entityClazz, String workingPath) { + Dataset res = spark + .read() + .textFile(inputPath) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)); + + res.map((MapFunction) r -> { + if(!r.getTitle() + .stream() + .filter(t -> t.getQualifier().getClassid() + .equalsIgnoreCase(ModelConstants.MAIN_TITLE_QUALIFIER.getClassid())) + .anyMatch(t -> t.getValue().toLowerCase().startsWith(verifyParam.toLowerCase()))){ + return r; + } + r.setContext(r.getContext().stream().filter(c -> !c.getId().split("::")[0] + .equalsIgnoreCase(contextId)).collect(Collectors.toList())); + return r; + } ,Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(workingPath); + + spark.read().textFile(workingPath).map((MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(inputPath); + } +} diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json new file mode 100644 index 000000000..9b1588283 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json @@ -0,0 +1,37 @@ +[ + { + "paramName": "issm", + "paramLongName": "isSparkSessionManaged", + "paramDescription": "when true will stop SparkSession after job execution", + "paramRequired": false + }, + { + "paramName": "in", + "paramLongName": "inputPath", + "paramDescription": "the path to the graph data dump to read", + "paramRequired": true + }, + { + "paramName": "wp", + "paramLongName": "workingPath", + "paramDescription": "the path to store the output graph", + "paramRequired": true + }, + { + "paramName": "ci", + "paramLongName": "contextId", + "paramDescription": "url to the ISLookup Service", + "paramRequired": true + }, + { + "paramName": "class", + "paramLongName": "graphTableClassName", + "paramDescription": "class name moelling the graph table", + "paramRequired": true + },{ + "paramName": "vf", + "paramLongName": "verifyParam", + "paramDescription": "url to the ISLookup Service", + "paramRequired": true +} +] diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java new file mode 100644 index 000000000..bba814346 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java @@ -0,0 +1,159 @@ +package eu.dnetlib.dhp.oa.graph.clean; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import eu.dnetlib.dhp.oa.graph.dump.Constants; +import eu.dnetlib.dhp.oa.graph.dump.DumpJobTest; +import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; +import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.dump.oaf.Instance; +import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; +import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.schema.oaf.Publication; +import eu.dnetlib.dhp.schema.oaf.Software; +import eu.dnetlib.dhp.schema.oaf.StructuredProperty; +import org.apache.commons.io.FileUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.api.java.function.MapFunction; +import org.apache.spark.sql.Encoders; +import org.apache.spark.sql.SparkSession; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Locale; + +public class CleanContextTest { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + private static SparkSession spark; + + private static Path workingDir; + + private static final Logger log = LoggerFactory.getLogger(CleanContextTest.class); + + @BeforeAll + public static void beforeAll() throws IOException { + workingDir = Files.createTempDirectory(DumpJobTest.class.getSimpleName()); + log.info("using work dir {}", workingDir); + + SparkConf conf = new SparkConf(); + conf.setAppName(DumpJobTest.class.getSimpleName()); + + conf.setMaster("local[*]"); + conf.set("spark.driver.host", "localhost"); + conf.set("hive.metastore.local", "true"); + conf.set("spark.ui.enabled", "false"); + conf.set("spark.sql.warehouse.dir", workingDir.toString()); + conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); + + spark = SparkSession + .builder() + .appName(DumpJobTest.class.getSimpleName()) + .config(conf) + .getOrCreate(); + } + + @AfterAll + public static void afterAll() throws IOException { + FileUtils.deleteDirectory(workingDir.toFile()); + spark.stop(); + } + + @Test + public void testResultClean() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json") + .getPath(); + final String prefix = "gcube "; + + + spark.read().textFile(sourcePath).map((MapFunction) r -> OBJECT_MAPPER.readValue(r, Publication.class), Encoders.bean(Publication.class)) + .write().json(workingDir.toString() + "/publication"); + + + CleanContextSparkJob.main(new String[] { + "--isSparkSessionManaged", Boolean.FALSE.toString(), + "--inputPath", workingDir.toString() + "/publication", + "-graphTableClassName", Publication.class.getCanonicalName(), + "-workingPath", workingDir.toString() + "/working", + "-contextId","sobigdata", + "-verifyParam","gCube " + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/publication") + .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); + + Assertions.assertEquals(7, tmp.count()); + + //original result with sobigdata context and gcube as starting string in the main title for the publication + Assertions.assertEquals(0, + tmp.filter(p->p.getId().equals("50|DansKnawCris::0224aae28af558f21768dbc6439c7a95")).collect().get(0).getContext().size()); + + //original result with sobigdata context without gcube as starting string in the main title for the publication + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().size()); + Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().get(0).getId() ); + + //original result with sobigdata context with gcube as starting string in the subtitle + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().size()); + Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().get(0).getId() ); + List titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); + Assertions.assertEquals("subtitle", titles.get(0).getQualifier().getClassid()); + + //original result with sobigdata context with gcube not as starting string in the main title + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().size()); + Assertions.assertEquals("sobigdata::projects::1",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().get(0).getId() ); + titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertFalse(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().contains(prefix.trim()) ); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + + //original result with sobigdata in context and also other contexts with gcube as starting string for the main title + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().size()); + Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().get(0).getId() ); + titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + + //original result with multiple main title one of which whith gcube as starting string and with 2 contextes + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().size()); + Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().get(0).getId() ); + titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getTitle(); + Assertions.assertEquals(2, titles.size()); + Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix)) ); + + + //original result without sobigdata in context with gcube as starting string for the main title + Assertions.assertEquals(1, + tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().size()); + Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().get(0).getId() ); + titles = tmp.filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getTitle(); + Assertions.assertEquals(2, titles.size()); + + Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix))); + + + } +} diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json new file mode 100644 index 000000000..b7c51d810 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json @@ -0,0 +1,7 @@ +{"author":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::2"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2007-01-01"},"dateofcollection":"","dateoftransformation":"2020-05-25T16:14:18.452Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Lit.opg., bijl."}],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::0224aae28af558f21768dbc6439c7a95","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2007-01-01"},"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0017","classname":"Report","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"8250"},"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":null}],"language":{"classid":"nl","classname":"nl","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591282676557,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2019-12-01T07:51:24Z","harvestDate":"2020-05-25T11:33:13.427Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/rce:document:550013110","metadataNamespace":""}},"originalId":["DansKnawCris::0224aae28af558f21768dbc6439c7a95"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceRapporten&search=priref=550013110"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceRapporten&search=priref=550013110"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0017","classname":"0017","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"prospectie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Gcube veldonderzoek d.m.v. boringen (karterende fase) : Raadhuisstraat te Dirkshorn, gemeente Harenkarspel"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Synthegra Archeologie Rapportenreeks P0502381"}],"journal":null} +{"author":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::2"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":true,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":null,"dateofcollection":"","dateoftransformation":"2020-05-25T17:03:57.761Z","description":[],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":null,"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0017","classname":"Report","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount": {"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1396"},"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":null}],"language":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591283087415,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2019-12-01T07:58:39Z","harvestDate":"2020-05-25T11:34:38.707Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/rce-kb:document:800020324","metadataNamespace":""}},"originalId":["DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800020324"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800020324"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0017","classname":"0017","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"None"}],"journal":null} +{"author":[{"affiliation":[],"fullname":"van Someren, Christian","name":"Christian","pid":[],"rank":1,"surname":"van Someren"}],"bestaccessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::2"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2016-11-01"},"dateofcollection":"","dateoftransformation":"2020-05-25T17:55:32.27Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Over het Energieakkoord. In het energieakkoord voor duurzame groei is afgesproken dat in 2020 14 procent van de opwek hernieuwbaar moet zijn en in 2023 16 procent. De doelstelling is een uitdagende opgave waarbij de eerste vraag is: \"Hoeveel hernieuwbare energie wordt er op dit moment opgewekt in Nederland?\" Deze website geeft antwoord op de vraag voor de actueel opgewekte windenergie, zonne-energie en biogas."}],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2016-11-01"},"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0038","classname":"Other literature type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":["http://energieopwek.nl/"]}],"language":{"classid":"nl","classname":"nl","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591282663379,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2020-05-08T17:46:55Z","harvestDate":"2020-05-25T15:30:24.079Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/hbo:oai:hbokennisbank.nl:hanzepure:oai:research.hanze.nl:publications/813a5dfa-4fd0-44c4-8cbf-310324dc724d","metadataNamespace":""}},"originalId":["DansKnawCris::3c81248c335f0aa07e06817ece6fa6af"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"urn:nbn:nl:hs:18-813a5dfa-4fd0-44c4-8cbf-310324dc724d"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"urn:nbn:nl:hs:18-813a5dfa-4fd0-44c4-8cbf-310324dc724d"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0038","classname":"0038","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"energieproductie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Management"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Monitoring"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Policy and Law"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Energie interventies en gedrag"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"publieke ondersteuning en communicatie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Professional practice & society"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"subtitle","classname":"subtitle","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"GCUBE opwek"}],"journal":null} +{"author":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::1"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":null,"dateofcollection":"","dateoftransformation":"2020-05-25T17:55:40.568Z","description":[],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":null,"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0017","classname":"Report","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":null}],"language":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591282670417,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2019-12-01T08:41:34Z","harvestDate":"2020-05-25T11:40:05.974Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/rce:document:550052278","metadataNamespace":""}},"originalId":["DansKnawCris::3c9f068ddc930360bec6925488a9a97f"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceRapporten&search=priref=550052278"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceRapporten&search=priref=550052278"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0017","classname":"0017","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"None GCUBE"}],"journal":null} +{"author":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"dh-ch"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::1"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2010-01-01"},"dateofcollection":"","dateoftransformation":"2020-05-25T18:11:57.737Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Met lit. opg"}],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::4669a378a73661417182c208e6fdab53","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2010-01-01"},"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0017","classname":"Report","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":null}],"language":{"classid":"nl","classname":"nl","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591282758835,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2019-12-01T07:36:00Z","harvestDate":"2020-05-25T11:30:47.199Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/rce-kb:document:800007467","metadataNamespace":""}},"originalId":["DansKnawCris::4669a378a73661417182c208e6fdab53"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800007467"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800007467"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0017","classname":"0017","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Vlaardingen"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"gCube RAAP-rapport, ISSN 0925-6229 2089"}],"journal":null} +{"author":[],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"dh-ch"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"sobigdata::projects::1"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":null,"dateofcollection":"","dateoftransformation":"2020-05-25T18:18:18.049Z","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Met literatuuropgave"}],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"dateofacceptance":null,"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|openaire____::c6df70599aa984f16ee52b4b86d2e89f","value":"DANS (Data Archiving and Networked Services)"},"instancetype":{"classid":"0017","classname":"Report","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":null}],"language":{"classid":"nl","classname":"nl","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1591283010899,"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Fservices.nod.dans.knaw.nl%2Foa-cerif","datestamp":"2019-12-01T07:48:12Z","harvestDate":"2020-05-25T11:32:46.363Z","identifier":"oai:services.nod.dans.knaw.nl:Publications/rce-kb:document:800014509","metadataNamespace":""}},"originalId":["DansKnawCris::4a9152e80f860eab99072e921d74a0ff"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800014509"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"urn","classname":"urn","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"http://cultureelerfgoed.adlibsoft.com/dispatcher.aspx?action=search&database=ChoiceFullCatalogue&search=priref=800014509"}],"publisher":null,"relevantdate":[],"resourcetype":{"classid":"0017","classname":"0017","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"archeologie"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Bladel"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"value":"Archaeology"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Proefsleuvenonderzoek aan de Bredasebaan 8 te Bladel"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"sysimport:crosswalk:datasetarchive","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"gcube Archeodienst rapport, ISSN 1877-2900 565"}],"journal":null} +{"author":[{"affiliation":null,"fullname":"Schubart, A.","name":"A.","pid":[],"rank":1,"surname":"Schubart"}],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"dataInfo":null,"key":"10|openaire____::081b82f96300b6a6e3d282bad31cb6e2","value":"Crossref"},{"dataInfo":null,"key":"10|openaire____::8ac8380272269217cb09a928c8caa993","value":"UnpayWall"},{"dataInfo":null,"key":"10|openaire____::5f532a3fc4f1ea403f37070f59a7a53a","value":"Microsoft Academic Graph"},{"dataInfo":null,"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Bulktagging for Community - Subject","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":null}],"id":"dh-ch"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"decisiontree-dedup-test","inferred":true,"invisible":false,"provenanceaction":{"classid":"sysimport:dedup","classname":"sysimport:dedup","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.8"},"dateofacceptance":{"dataInfo":null,"value":"1866-01-01"},"dateofcollection":"2019-02-17T01:33:44Z","dateoftransformation":null,"description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"n/a"}],"embargoenddate":null,"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"id":"50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8","instance":[{"accessright":{"classid":"RESTRICTED","classname":"Restricted","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::081b82f96300b6a6e3d282bad31cb6e2","value":"Crossref"},"dateofacceptance":{"dataInfo":null,"value":"1866-01-01"},"distributionlocation":null,"hostedby":{"dataInfo":null,"key":"10|issn___print::4a110be99bfeda7a5e85b5e4c7e95d87","value":"Philologus"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":null,"refereed":null,"url":["http://www.degruyter.com/view/j/phil.1866.24.issue-1-4/phil.1866.24.14.561/phil.1866.24.14.561.xml","http://www.degruyter.com/view/j/phil.1866.24.issue-1-4/phil.1866.24.14.561/phil.1866.24.14.561.pdf","http://dx.doi.org/10.1524/phil.1866.24.14.561"]},{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|openaire____::8ac8380272269217cb09a928c8caa993","value":"UnpayWall"},"dateofacceptance":null,"distributionlocation":null,"hostedby":{"dataInfo":null,"key":"10|issn___print::4a110be99bfeda7a5e85b5e4c7e95d87","value":"Philologus"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":{"dataInfo":null,"value":"cc0"},"processingchargeamount":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2578.35"},"processingchargecurrency":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":true,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EUR"},"refereed":null,"url":["https://zenodo.org/record/1634826/files/article.pdf"]},{"accessright":null,"collectedfrom":{"dataInfo":null,"key":"10|openaire____::5f532a3fc4f1ea403f37070f59a7a53a","value":"Microsoft Academic Graph"},"dateofacceptance":null,"distributionlocation":null,"hostedby":{"dataInfo":null,"key":"10|issn___print::4a110be99bfeda7a5e85b5e4c7e95d87","value":"Philologus"},"instancetype":{"classid":"0001","classname":"Article","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":null,"refereed":null,"url":["http://www.degruyter.com/view/j/phil.1866.24.issue-1-4/phil.1866.24.14.561/phil.1866.24.14.561.xml","https://academic.microsoft.com/#/detail/2601803436"]},{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":{"dataInfo":null,"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk","classname":"sysimport:crosswalk","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1866-01-01"},"distributionlocation":"","hostedby":{"dataInfo":null,"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"},"instancetype":{"classid":"0038","classname":"Other literature type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":null,"processingchargeamount":null,"processingchargecurrency":null,"refereed":null,"url":["https://zenodo.org/record/1634826"]}],"language":null,"lastupdatetimestamp":1591290751234,"oaiprovenance":null,"originalId":["10.1524/phil.1866.24.14.561","2601803436","od______2659::f9ba286bcf8429160b58072028052325"],"pid":[{"dataInfo":null,"qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.1524/phil.1866.24.14.561"}],"publisher":{"dataInfo":null,"value":"Walter de Gruyter GmbH"},"relevantdate":[{"dataInfo":null,"qualifier":{"classid":"created","classname":"created","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"value":"2017-03-26T10:09:50Z"},{"dataInfo":null,"qualifier":{"classid":"published-print","classname":"published-print","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"value":"1866-01-01"}],"resourcetype":{"classid":"Other","classname":"Other","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"publication","classname":"publication","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[{"dataInfo":null,"value":"Crossref"},{"dataInfo":null,"value":null}],"subject":[{"dataInfo":null,"qualifier":{"classid":"keywords","classname":"keywords","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Theology"},{"dataInfo":null,"qualifier":{"classid":"keywords","classname":"keywords","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"History"},{"dataInfo":null,"qualifier":{"classid":"keywords","classname":"keywords","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Art history"}],"title":[{"dataInfo":null,"qualifier":{"classid":"alternative title","classname":"alternative title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"XIV. Die wörter άγαλμα, είχών, ξόανον, ανδρuις und verwandte, in ihren verschiedenen beziehungen. Nach Pausanias"},{"dataInfo":null,"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"gcube xiv die worter άγαλμα eίχών ξόανον ανδρuις und verwandte in ihren verschiedenen beziehungen nach pausanias"}],"journal":{"conferencedate":null,"conferenceplace":null,"dataInfo":null,"edition":null,"ep":null,"iss":null,"issnLinking":null,"issnOnline":"2196-7008","issnPrinted":"0031-7985","name":"Philologus","sp":null,"vol":"24"}} \ No newline at end of file From c442c91f8951d42f89d1270797b833d270f9217b Mon Sep 17 00:00:00 2001 From: antleb Date: Wed, 6 Apr 2022 12:40:02 +0300 Subject: [PATCH 02/83] computing stats in each step --- .../scripts/step16-createIndicatorsTables.sql | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql index a95ee74d8..24e6bff7e 100755 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql @@ -12,6 +12,8 @@ and (ri.accessright = 'Open Access' or ri.accessright = 'Embargo' or ri.accessright = 'Open Source')) tmp on p.id= tmp.id; +compute stats indi_pub_green_oa; + create table indi_pub_grey_lit stored as parquet as select distinct p.id, coalesce(grey_lit, 0) as grey_lit from publication p @@ -22,6 +24,8 @@ join result_classifications rt on rt.id = p.id where rt.type not in ('Article','Part of book or chapter of book','Book','Doctoral thesis','Master thesis','Data Paper', 'Thesis', 'Bachelor thesis', 'Conference object') and not exists (select 1 from result_classifications rc where type ='Other literature type' and rc.id=p.id)) tmp on p.id=tmp.id; +compute stats indi_pub_grey_lit; + create table indi_pub_doi_from_crossref stored as parquet as select distinct p.id, coalesce(doi_from_crossref, 0) as doi_from_crossref from publication p @@ -31,6 +35,7 @@ join datasource d on d.id = ri.collectedfrom where pidtype='Digital Object Identifier' and d.name ='Crossref') tmp on tmp.id=p.id; +compute stats indi_pub_doi_from_crossref; ---- Sprint 2 ---- create table indi_result_has_cc_licence stored as parquet as select distinct r.id, (case when lic='' or lic is null then 0 else 1 end) as has_cc_license @@ -40,6 +45,8 @@ join result_licenses as license on license.id = r.id where lower(license.type) LIKE '%creativecommons.org%' OR lower(license.type) LIKE '%cc-%') tmp on r.id= tmp.id; +compute stats indi_result_has_cc_licence; + create table indi_result_has_cc_licence_url stored as parquet as select distinct r.id, case when lic_host='' or lic_host is null then 0 else 1 end as has_cc_license_url from result r @@ -49,16 +56,21 @@ join result_licenses as license on license.id = r.id WHERE lower(parse_url(license.type, "HOST")) = "creativecommons.org") tmp on r.id= tmp.id; +compute stats indi_result_has_cc_licence_url; + create table indi_pub_has_abstract stored as parquet as select distinct publication.id, coalesce(abstract, 1) has_abstract from publication; +compute stats indi_pub_has_abstract; + create table indi_result_with_orcid stored as parquet as select distinct r.id, coalesce(has_orcid, 0) as has_orcid from result r left outer join (select id, 1 as has_orcid from result_orcid) tmp on r.id= tmp.id; +compute stats indi_result_with_orcid; ---- Sprint 3 ---- create table indi_funded_result_with_fundref stored as parquet as @@ -68,6 +80,8 @@ left outer join (select distinct id, 1 as fundref from project_results where provenance='Harvested') tmp on r.id= tmp.id; +compute stats indi_funded_result_with_fundref; + create table indi_result_org_country_collab stored as parquet as with tmp as (select o.id as id, o.country , ro.id as result,r.type from organization o @@ -79,6 +93,8 @@ join tmp as o2 on o1.result=o2.result where o1.id<>o2.id and o1.country<>o2.country group by o1.id, o1.type,o2.country; +compute stats indi_result_org_country_collab; + create table indi_result_org_collab stored as parquet as with tmp as (select o.id, ro.id as result,r.type from organization o @@ -90,6 +106,8 @@ join tmp as o2 on o1.result=o2.result where o1.id<>o2.id group by o1.id, o2.id, o1.type; +compute stats indi_result_org_collab; + create table indi_funder_country_collab stored as parquet as with tmp as (select funder, project, country from organization_projects op join organization o on o.id=op.id @@ -101,6 +119,8 @@ join tmp as f2 on f1.project=f2.project where f1.country<>f2.country group by f1.funder, f2.country, f1.country; +compute stats indi_funder_country_collab; + create table indi_result_country_collab stored as parquet as with tmp as (select country, ro.id as result,r.type from organization o @@ -112,6 +132,8 @@ join tmp as o2 on o1.result=o2.result where o1.country<>o2.country group by o1.country, o2.country, o1.type; +compute stats indi_result_country_collab; + ---- Sprint 4 ---- create table indi_pub_diamond stored as parquet as select distinct pd.id, coalesce(in_diamond_journal, 0) as in_diamond_journal @@ -123,6 +145,8 @@ join stats_ext.plan_s_jn ps where (ps.issn_print=d.issn_printed and ps.issn_onli and (ps.journal_is_in_doaj=true or ps.journal_is_oa=true) and ps.has_apc=false) tmp on pd.id=tmp.id; +compute stats indi_pub_diamond; + create table indi_pub_hybrid stored as parquet as select distinct pd.id, coalesce(is_hybrid, 0) as is_hybrid from publication_datasources pd @@ -133,6 +157,8 @@ join stats_ext.plan_s_jn ps where (ps.issn_print=d.issn_printed and ps.issn_onli and (ps.journal_is_in_doaj=false and ps.journal_is_oa=false)) tmp on pd.id=tmp.id; +compute stats indi_pub_hybrid; + create table indi_pub_in_transformative stored as parquet as select distinct pd.id, coalesce(is_transformative, 0) as is_transformative from publication pd @@ -143,6 +169,8 @@ join stats_ext.plan_s_jn ps where (ps.issn_print=d.issn_printed and ps.issn_onli and ps.is_transformative_journal=true) tmp on pd.id=tmp.id; +compute stats indi_pub_in_transformative; + create table indi_pub_closed_other_open stored as parquet as select distinct ri.id, coalesce(pub_closed_other_open, 0) as pub_closed_other_open from result_instance ri left outer join @@ -153,11 +181,12 @@ where d.type like '%Journal%' and ri.accessright='Closed Access' and (p.bestlicence='Open Access' or p.bestlicence='Open Source')) tmp on tmp.id=ri.id; - +compute stats indi_pub_closed_other_open; ---- Sprint 5 ---- create table indi_result_no_of_copies stored as parquet as select id, count(id) as number_of_copies from result_instance group by id; +compute stats indi_result_no_of_copies; ---- Sprint 6 ---- create table indi_pub_gold_oa stored as parquet as WITH gold_oa AS ( @@ -183,6 +212,8 @@ LEFT OUTER JOIN ( JOIN issn on issn.id=pd.datasource JOIN gold_oa on issn.issn = gold_oa.issn) tmp ON pd.id=tmp.id; +compute stats indi_pub_gold_oa; + create table indi_datasets_gold_oa stored as parquet as WITH gold_oa AS ( SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_1 as issn @@ -210,6 +241,8 @@ LEFT OUTER JOIN ( JOIN issn on issn.id=pd.datasource JOIN gold_oa on issn.issn = gold_oa.issn) tmp ON pd.id=tmp.id; +compute stats indi_datasets_gold_oa; + create table indi_software_gold_oa stored as parquet as WITH gold_oa AS ( SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_1 as issn @@ -237,6 +270,8 @@ LEFT OUTER JOIN ( JOIN issn on issn.id=pd.datasource JOIN gold_oa on issn.issn = gold_oa.issn) tmp ON pd.id=tmp.id; +compute stats indi_software_gold_oa; + create table indi_org_findable stored as parquet as with result_with_pid as ( select ro.organization organization, count(distinct rp.id) no_result_with_pid from result_organization ro @@ -263,6 +298,8 @@ join result_with_pid_share on result_with_pid_share.organization=allresults.orga left outer join ( select organization, abstract_share from result_with_abstract_share) tmp on tmp.organization=allresults.organization; +compute stats indi_org_findable; + create table indi_org_openess stored as parquet as WITH datasets_oa as ( SELECT ro.organization, count(dg.id) no_oadatasets FROM indi_datasets_gold_oa dg @@ -313,6 +350,8 @@ left outer join ( left outer join ( select organization,s from allsoftwaresshare) tmp1 on tmp1.organization=allpubsshare.organization; +compute stats indi_org_openess; + create table indi_pub_hybrid_oa_with_cc stored as parquet as WITH hybrid_oa AS ( SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_print as issn @@ -343,6 +382,8 @@ LEFT OUTER JOIN ( JOIN indi_result_has_cc_licence cc on pd.id=cc.id where cc.has_cc_license=1) tmp on pd.id=tmp.id; +compute stats indi_pub_hybrid_oa_with_cc; + create table indi_pub_downloads stored as parquet as SELECT result_id, sum(downloads) no_dowloads from openaire_prod_usage_stats.usage_stats join publication on result_id=id @@ -350,6 +391,8 @@ where downloads>0 GROUP BY result_id order by no_dowloads desc; +compute stats indi_pub_downloads; + create table indi_pub_downloads_datasource stored as parquet as SELECT result_id, repository_id, sum(downloads) no_dowloads from openaire_prod_usage_stats.usage_stats join publication on result_id=id @@ -357,15 +400,21 @@ where downloads>0 GROUP BY result_id, repository_id order by result_id; +compute stats indi_pub_downloads_datasource; + create table indi_pub_downloads_year stored as parquet as SELECT result_id, substring(us.`date`, 1,4) as `year`, sum(downloads) no_dowloads from openaire_prod_usage_stats.usage_stats us join publication on result_id=id where downloads>0 GROUP BY result_id, `year` order by `year` asc; +compute stats indi_pub_downloads_year; + create table indi_pub_downloads_datasource_year stored as parquet as SELECT result_id, substring(us.`date`, 1,4) as `year`, repository_id, sum(downloads) no_dowloads from openaire_prod_usage_stats.usage_stats us join publication on result_id=id where downloads>0 GROUP BY result_id, repository_id, `year` order by `year` asc, result_id; + +compute stats indi_pub_downloads_datasource_year; \ No newline at end of file From 4190c9f6bc2db772e0ea788c85a94c165d0f4cfa Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 6 Apr 2022 15:23:50 +0200 Subject: [PATCH 03/83] [graph raw] avoid NPEs importing datasource consent fields --- .../oa/graph/raw/MigrateDbEntitiesApplication.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index 1f8c23ac3..b5801ca5c 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -42,10 +42,7 @@ import java.io.IOException; import java.sql.Array; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; @@ -311,7 +308,13 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i ds.setContentpolicies(prepareListOfQualifiers(rs.getArray("contentpolicies"))); ds.setConsenttermsofuse(rs.getBoolean("consenttermsofuse")); ds.setFulltextdownload(rs.getBoolean("fulltextdownload")); - ds.setConsenttermsofusedate(rs.getDate("consenttermsofusedate").toString()); + ds + .setConsenttermsofusedate( + Optional + .ofNullable( + rs.getDate("consenttermsofusedate")) + .map(c -> c.toString()) + .orElse(null)); return Arrays.asList(ds); } catch (final Exception e) { From e6124896709ab5087bf69c6905df96f641d0c8ab Mon Sep 17 00:00:00 2001 From: Serafeim Chatzopoulos Date: Wed, 6 Apr 2022 19:12:44 +0300 Subject: [PATCH 04/83] Add fileGZip collector plugin and respective test --- .../dhp/collection/CollectorWorker.java | 3 + .../collection/plugin/CollectorPlugin.java | 2 +- .../fileGZip/FileGZipCollectorPlugin.java | 49 ++++++++++++++++ .../fileGZip/FileGZipCollectorPluginTest.java | 55 ++++++++++++++++++ .../plugin/fileGZip/opendoar.xml.gz | Bin 0 -> 372515 bytes 5 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java create mode 100644 dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java index 2ea3f35cc..03f592169 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; +import eu.dnetlib.dhp.collection.plugin.fileGZip.FileGZipCollectorPlugin; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; @@ -114,6 +115,8 @@ public class CollectorWorker extends ReportingJob { return new OaiCollectorPlugin(clientParams); case rest_json2xml: return new RestCollectorPlugin(clientParams); + case fileGZip: + return new FileGZipCollectorPlugin(); case other: final CollectorPlugin.NAME.OTHER_NAME plugin = Optional .ofNullable(api.getParams().get("other_plugin_type")) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java index 841d42fea..7d6aaaff8 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java @@ -10,7 +10,7 @@ import eu.dnetlib.dhp.common.collection.CollectorException; public interface CollectorPlugin { enum NAME { - oai, other, rest_json2xml; + oai, other, rest_json2xml, fileGZip; public enum OTHER_NAME { mdstore_mongodb_dump, mdstore_mongodb diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java new file mode 100644 index 000000000..38f328890 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java @@ -0,0 +1,49 @@ +package eu.dnetlib.dhp.collection.plugin.fileGZip; + +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.collection.plugin.CollectorPlugin; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.URL; +import java.util.Optional; +import java.util.stream.Stream; +import java.util.zip.GZIPInputStream; + +public class FileGZipCollectorPlugin implements CollectorPlugin { + + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); + + public static final String ENCODING = "encoding"; + + @Override + public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { + + final String baseUrl = Optional + .ofNullable(api.getBaseUrl()) + .orElseThrow( () -> new CollectorException("missing baseUrl, required by the fileGZip collector plugin")); + + log.info("fileGZip.baseUrl: {}", baseUrl); + + final String encoding = Optional + .ofNullable(api.getParams().get(ENCODING)) + .orElseThrow(() -> new CollectorException(String.format("missing parameter '%s', required by the fileGZip collector plugin", ENCODING))); + + log.info("fileGZip.encoding: {}", encoding); + + try { + + InputStream gzipStream = new GZIPInputStream(new FileInputStream(baseUrl)); + Reader decoder = new InputStreamReader(gzipStream, encoding); + BufferedReader reader = new BufferedReader(decoder); + + return reader.lines(); + + } catch (Exception e) { + throw new CollectorException(e); + } + } +} diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java new file mode 100644 index 000000000..793a5b04c --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java @@ -0,0 +1,55 @@ +package eu.dnetlib.dhp.collection.plugin.fileGZip; + +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.stream.Stream; + +public class FileGZipCollectorPluginTest { + + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); + + private final ApiDescriptor api = new ApiDescriptor(); + private FileGZipCollectorPlugin plugin; + + private static final String SPLIT_ON_ELEMENT = "repository"; + private static final String ENCODING = "UTF-8"; + + @BeforeEach + public void setUp() { + + final String gzipFile = this + .getClass() + .getResource("/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz") + .getFile(); + + System.out.println(gzipFile); + api.setBaseUrl(gzipFile); + + HashMap params = new HashMap<>(); + params.put("splitOnElement", SPLIT_ON_ELEMENT); + params.put("encoding", ENCODING); + + api.setParams(params); + + plugin = new FileGZipCollectorPlugin(); + } + + @Test + void test() throws CollectorException { + + final Stream stream = plugin.collect(api, new AggregatorReport()); + + stream.limit(10).forEach(s -> { + Assertions.assertTrue(s.length() > 0); + log.info(s); + }); + } +} diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..f783b69e7ba5339a691817fb012566c5c3e95dca GIT binary patch literal 372515 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

@6m9Xoy#64F|tDL#MF2+EN4k? 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

A collection of Tweet IDs related to Covid-19 Vaccines, gathered from Twitter since Jan 4, 2021. "}],"externalReference":[],"extraInfo":[],"format":[],"fulltext":[],"geolocation":[],"id":"50|doi_________::fd4ef5c83a3d7081c4b799118df8500e","instance":[{"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2021-02-09"},"hostedby":{"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"},"instancetype":{"classid":"0021","classname":"Dataset","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"https://creativecommons.org/licenses/by/4.0/legalcode"},"pid":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.5281/zenodo.5072546"}],"refereed":{"classid":"0000","classname":"UNKNOWN","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["http://dx.doi.org/10.5281/zenodo.5072546","https://dx.doi.org/10.5281/zenodo.5072546"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1650576578167,"originalId":["50|od______2659::dbd5aab6266fc9717b856a7cd1d3b7f8","oai:zenodo.org:5072546"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"doi","classname":"Digital Object Identifier","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"10.5281/zenodo.5072546"}],"publisher":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Zenodo"},"relevantdate":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"issued","classname":"issued","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"value":"2021-02-09"}],"resourcetype":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"storagedate":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2021-02-09"},"subject":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Twitter"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Tweet IDs"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Covid-19"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Vaccine"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:subject","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"eosc","classname":"European Open Science Cloud","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"EOSC::Twitter Data"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"CoVaxxy Tweet IDs data set"}],"version":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"1"}} \ No newline at end of file From 8a72de401167f522e1f825a7b9c31d3e2ecb4179 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 4 May 2022 10:10:56 +0200 Subject: [PATCH 46/83] [EOSCTag] modified workflow to execute all the steps and not only the last one --- .../resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml index 4c34886e6..f34c5110f 100644 --- a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml @@ -29,7 +29,7 @@ - + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] From 846975c8866d341112d3b6f10c1f533a75abf8cc Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 5 May 2022 11:37:58 +0200 Subject: [PATCH 47/83] [eosc_services] using the correct 'keyword' subject type, as declared in the dnet:subject_classification_typologies vocabulary --- .../resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index 81eab8163..c4096f90d 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -47,7 +47,7 @@ SELECT d.namespaceprefix AS namespaceprefix, NULL AS odnumberofitems, NULL AS odnumberofitemsdate, - (SELECT array_agg(s|| '###keywords@@@dnet:subject_classification_typologies') + (SELECT array_agg(s|| '###keyword@@@dnet:subject_classification_typologies') FROM UNNEST( ARRAY( SELECT trim(s) From cfbbcaf7c42c85f8bd9095ecd97c5adadf049bdf Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Fri, 6 May 2022 12:49:36 +0300 Subject: [PATCH 48/83] commented out indi_result_org_country_collab --- .../scripts/step16-createIndicatorsTables.sql | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql index 24e6bff7e..09b24f741 100755 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql @@ -82,18 +82,18 @@ on r.id= tmp.id; compute stats indi_funded_result_with_fundref; -create table indi_result_org_country_collab stored as parquet as -with tmp as -(select o.id as id, o.country , ro.id as result,r.type from organization o -join result_organization ro on o.id=ro.organization -join result r on r.id=ro.id where o.country <> 'UNKNOWN') -select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations -from tmp as o1 -join tmp as o2 on o1.result=o2.result -where o1.id<>o2.id and o1.country<>o2.country -group by o1.id, o1.type,o2.country; - -compute stats indi_result_org_country_collab; +-- create table indi_result_org_country_collab stored as parquet as +-- with tmp as +-- (select o.id as id, o.country , ro.id as result,r.type from organization o +-- join result_organization ro on o.id=ro.organization +-- join result r on r.id=ro.id where o.country <> 'UNKNOWN') +-- select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations +-- from tmp as o1 +-- join tmp as o2 on o1.result=o2.result +-- where o1.id<>o2.id and o1.country<>o2.country +-- group by o1.id, o1.type,o2.country; +-- +-- compute stats indi_result_org_country_collab; create table indi_result_org_collab stored as parquet as with tmp as From 61b4c19e6554b7b9ed53d1d1966240ce956c1211 Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Fri, 6 May 2022 12:52:10 +0300 Subject: [PATCH 49/83] restored indi_result_org_country_collab, removed indi_result_org_collab --- .../scripts/step16-createIndicatorsTables.sql | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql index 09b24f741..c40618510 100755 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql @@ -82,31 +82,31 @@ on r.id= tmp.id; compute stats indi_funded_result_with_fundref; --- create table indi_result_org_country_collab stored as parquet as --- with tmp as --- (select o.id as id, o.country , ro.id as result,r.type from organization o --- join result_organization ro on o.id=ro.organization --- join result r on r.id=ro.id where o.country <> 'UNKNOWN') --- select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations --- from tmp as o1 --- join tmp as o2 on o1.result=o2.result --- where o1.id<>o2.id and o1.country<>o2.country --- group by o1.id, o1.type,o2.country; --- --- compute stats indi_result_org_country_collab; - -create table indi_result_org_collab stored as parquet as +create table indi_result_org_country_collab stored as parquet as with tmp as -(select o.id, ro.id as result,r.type from organization o +(select o.id as id, o.country , ro.id as result,r.type from organization o join result_organization ro on o.id=ro.organization -join result r on r.id=ro.id) -select o1.id org1,o2.id org2, o1.type, count(distinct o1.result) as collaborations +join result r on r.id=ro.id where o.country <> 'UNKNOWN') +select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations from tmp as o1 join tmp as o2 on o1.result=o2.result -where o1.id<>o2.id -group by o1.id, o2.id, o1.type; +where o1.id<>o2.id and o1.country<>o2.country +group by o1.id, o1.type,o2.country; -compute stats indi_result_org_collab; +compute stats indi_result_org_country_collab; + +-- create table indi_result_org_collab stored as parquet as +-- with tmp as +-- (select o.id, ro.id as result,r.type from organization o +-- join result_organization ro on o.id=ro.organization +-- join result r on r.id=ro.id) +-- select o1.id org1,o2.id org2, o1.type, count(distinct o1.result) as collaborations +-- from tmp as o1 +-- join tmp as o2 on o1.result=o2.result +-- where o1.id<>o2.id +-- group by o1.id, o2.id, o1.type; +-- +-- compute stats indi_result_org_collab; create table indi_funder_country_collab stored as parquet as with tmp as (select funder, project, country from organization_projects op From a056f59c6e3839986120ecbb4847f96851c73f78 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Mon, 9 May 2022 12:51:35 +0200 Subject: [PATCH 50/83] [UsageCount] make it as an action set as it should be, plus changed the test to make them work as well now --- .../usagestats/SparkAtomicActionUsageJob.java | 19 +++++++++++++------ .../SparkAtomicActionCountJobTest.java | 19 ++++++++----------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index c284ad8bd..9428f5c59 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -9,7 +9,10 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; +import eu.dnetlib.dhp.schema.action.AtomicAction; import org.apache.commons.io.IOUtils; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.SequenceFileOutputFormat; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.api.java.function.MapGroupsFunction; @@ -29,6 +32,7 @@ import eu.dnetlib.dhp.schema.oaf.DataInfo; import eu.dnetlib.dhp.schema.oaf.Measure; import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; +import scala.Tuple2; /** * created the Atomic Action for each type of results @@ -73,7 +77,7 @@ public class SparkAtomicActionUsageJob implements Serializable { spark -> { removeOutputDir(spark, outputPath); prepareResults(dbname, spark, workingPath); - prepareActionSet(spark, workingPath, outputPath); + writeActionSet(spark, workingPath, outputPath); }); } @@ -89,7 +93,7 @@ public class SparkAtomicActionUsageJob implements Serializable { .json(workingPath); } - public static void prepareActionSet(SparkSession spark, String inputPath, String outputPath) { + public static void writeActionSet(SparkSession spark, String inputPath, String outputPath) { readPath(spark, inputPath, UsageStatsModel.class) .groupByKey((MapFunction) us -> us.getResult_id(), Encoders.STRING()) .mapGroups((MapGroupsFunction) (k, it) -> { @@ -105,10 +109,13 @@ public class SparkAtomicActionUsageJob implements Serializable { res.setMeasures(getMeasure(first.getDownloads(), first.getViews())); return res; }, Encoders.bean(Result.class)) - .write() - .mode(SaveMode.Overwrite) - .option("compression", "gzip") - .json(outputPath); + .toJavaRDD() + .map(p -> new AtomicAction(p.getClass(), p)) + .mapToPair( + aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), + new Text(OBJECT_MAPPER.writeValueAsString(aa)))) + .saveAsHadoopFile(outputPath, Text.class, Text.class, SequenceFileOutputFormat.class); + } private static List getMeasure(Long downloads, Long views) { diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java index 7cc9eb326..1af408629 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java @@ -8,14 +8,12 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Collectors; +import eu.dnetlib.dhp.schema.action.AtomicAction; import org.apache.commons.io.FileUtils; import org.apache.hadoop.io.Text; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; -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.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; @@ -26,8 +24,6 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.actionmanager.bipfinder.SparkAtomicActionScoreJob; -import eu.dnetlib.dhp.schema.action.AtomicAction; import eu.dnetlib.dhp.schema.oaf.Result; public class SparkAtomicActionCountJobTest { @@ -72,19 +68,20 @@ public class SparkAtomicActionCountJobTest { @Test void testMatch() { String usageScoresPath = getClass() - .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") - .getPath(); + .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") + .getPath(); - SparkAtomicActionUsageJob.prepareActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); + SparkAtomicActionUsageJob.writeActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/actionSet") - .map(usm -> OBJECT_MAPPER.readValue(usm, Result.class)); + JavaRDD tmp = sc.sequenceFile(workingDir.toString() + "/actionSet", Text.class, Text.class) + .map(usm -> OBJECT_MAPPER.readValue(usm._2.getBytes(), AtomicAction.class)) + .map(aa -> (Result) aa.getPayload()); Assertions.assertEquals(9, tmp.count()); + tmp.foreach(r -> Assertions.assertEquals(2, r.getMeasures().size())); tmp .foreach( From 89657a0b78d214017e11613ee4e34b0af805330f Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Mon, 9 May 2022 14:43:27 +0200 Subject: [PATCH 51/83] [UsageCount] refactoring --- .../usagestats/SparkAtomicActionUsageJob.java | 14 +++++++------- .../usagestats/SparkAtomicActionCountJobTest.java | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 9428f5c59..5f099b8f2 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -9,7 +9,6 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; -import eu.dnetlib.dhp.schema.action.AtomicAction; import org.apache.commons.io.IOUtils; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.SequenceFileOutputFormat; @@ -27,6 +26,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.common.HdfsSupport; +import eu.dnetlib.dhp.schema.action.AtomicAction; import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.oaf.DataInfo; import eu.dnetlib.dhp.schema.oaf.Measure; @@ -109,12 +109,12 @@ public class SparkAtomicActionUsageJob implements Serializable { res.setMeasures(getMeasure(first.getDownloads(), first.getViews())); return res; }, Encoders.bean(Result.class)) - .toJavaRDD() - .map(p -> new AtomicAction(p.getClass(), p)) - .mapToPair( - aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), - new Text(OBJECT_MAPPER.writeValueAsString(aa)))) - .saveAsHadoopFile(outputPath, Text.class, Text.class, SequenceFileOutputFormat.class); + .toJavaRDD() + .map(p -> new AtomicAction(p.getClass(), p)) + .mapToPair( + aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), + new Text(OBJECT_MAPPER.writeValueAsString(aa)))) + .saveAsHadoopFile(outputPath, Text.class, Text.class, SequenceFileOutputFormat.class); } diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java index 1af408629..8aa718bae 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java @@ -8,7 +8,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Collectors; -import eu.dnetlib.dhp.schema.action.AtomicAction; import org.apache.commons.io.FileUtils; import org.apache.hadoop.io.Text; import org.apache.spark.SparkConf; @@ -24,6 +23,7 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; +import eu.dnetlib.dhp.schema.action.AtomicAction; import eu.dnetlib.dhp.schema.oaf.Result; public class SparkAtomicActionCountJobTest { @@ -68,20 +68,20 @@ public class SparkAtomicActionCountJobTest { @Test void testMatch() { String usageScoresPath = getClass() - .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") - .getPath(); + .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") + .getPath(); SparkAtomicActionUsageJob.writeActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); - JavaRDD tmp = sc.sequenceFile(workingDir.toString() + "/actionSet", Text.class, Text.class) - .map(usm -> OBJECT_MAPPER.readValue(usm._2.getBytes(), AtomicAction.class)) - .map(aa -> (Result) aa.getPayload()); + JavaRDD tmp = sc + .sequenceFile(workingDir.toString() + "/actionSet", Text.class, Text.class) + .map(usm -> OBJECT_MAPPER.readValue(usm._2.getBytes(), AtomicAction.class)) + .map(aa -> (Result) aa.getPayload()); Assertions.assertEquals(9, tmp.count()); - tmp.foreach(r -> Assertions.assertEquals(2, r.getMeasures().size())); tmp .foreach( From 378020e30af91206126377b0d7716452f0fb6f22 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 9 May 2022 16:05:06 +0200 Subject: [PATCH 52/83] [eosc_services] unit test adaptation --- .../raw/MigrateDbEntitiesApplicationTest.java | 4 ++-- .../dhp/oa/graph/hostedbymap/datasource.json | 2 +- ...atasourceorganization_resultset_entry.json | 2 +- .../graph/raw/services_resultset_entry.json | 14 +------------- .../sample/datasource/datasource_10.json.gz | Bin 2227 -> 2211 bytes 5 files changed, 5 insertions(+), 17 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java index 948dbfa50..9048a22ea 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java @@ -136,8 +136,8 @@ public class MigrateDbEntitiesApplicationTest { assertEquals(getValueAsString("releaseenddate", fields), ds.getReleasestartdate()); assertEquals(getValueAsString("missionstatementurl", fields), ds.getMissionstatementurl()); - assertEquals(false, ds.getDataprovider().getValue()); - assertEquals(false, ds.getServiceprovider().getValue()); + assertEquals(null, ds.getDataprovider()); + assertEquals(null, ds.getServiceprovider()); assertEquals(getValueAsString("databaseaccesstype", fields), ds.getDatabaseaccesstype()); assertEquals(getValueAsString("datauploadtype", fields), ds.getDatauploadtype()); diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/hostedbymap/datasource.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/hostedbymap/datasource.json index 5eb41bff5..3bf560135 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/hostedbymap/datasource.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/hostedbymap/datasource.json @@ -7,4 +7,4 @@ {"accessinfopackage":[],"collectedfrom":[{"key":"10|openaire____::081b82f96300b6a6e3d282bad31cb6e2","value":"Crossref"}],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"dataprovider":{"dataInfo":{"inferenceprovenance":null,"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"datasourcetype":{"classid":"pubsrepository::journal","classname":"Journal","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"dateofcollection":"2020-07-10","englishname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"International Journal of Operations Research and Information Systems"},"extraInfo":[],"id":"10|issn___print::982b4d2537d3f800b596fbec3dae0c7c","journal":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"issnOnline":"1947-9336","issnPrinted":"1947-9328","name":"International Journal of Operations Research and Information Systems"},"lastupdatetimestamp":1626336932282,"latitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"longitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"namespaceprefix":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"jrnl19479328"},"odcontenttypes":[],"odlanguages":[],"odnumberofitems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"officialname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"International Journal of Operations Research and Information Systems"},"openairecompatibility":{"classid":"hostedBy","classname":"collected from a compatible aggregator","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"originalId":["issn___print::1947-9328"],"pid":[],"policies":[],"serviceprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"subjects":[],"versioning":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false}} {"accessinfopackage":[],"collectedfrom":[{"key":"10|openaire____::081b82f96300b6a6e3d282bad31cb6e2","value":"Crossref"}],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"dataprovider":{"dataInfo":{"inferenceprovenance":null,"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"datasourcetype":{"classid":"pubsrepository::journal","classname":"Journal","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"dateofcollection":"2020-07-10","englishname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Bulletin of the British Mycological Society"},"extraInfo":[],"id":"10|issn___print::b9faf9c36c47169d4328e586eb62247c","journal":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"issnOnline":"","issnPrinted":"0007-1528","name":"Bulletin of the British Mycological Society"},"lastupdatetimestamp":1626336932282,"latitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"longitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"namespaceprefix":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"jrnl00071528"},"odcontenttypes":[],"odlanguages":[],"odnumberofitems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"officialname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Bulletin of the British Mycological Society"},"openairecompatibility":{"classid":"hostedBy","classname":"collected from a compatible aggregator","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"originalId":["issn___print::0007-1528"],"pid":[],"policies":[],"serviceprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"subjects":[],"versioning":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false}} {"accessinfopackage":[],"collectedfrom":[{"key":"10|openaire____::081b82f96300b6a6e3d282bad31cb6e2","value":"Crossref"}],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"dataprovider":{"dataInfo":{"inferenceprovenance":null,"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"datasourcetype":{"classid":"pubsrepository::journal","classname":"Journal","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"dateofcollection":"2020-07-10","englishname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Journal of Technology and Innovation"},"extraInfo":[],"id":"10|issn__online::709e633c2ecf46396a4ed1b0096da1d0","journal":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"issnOnline":"2410-3993","issnPrinted":"","name":"Journal of Technology and Innovation"},"lastupdatetimestamp":1626336932282,"latitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"longitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"namespaceprefix":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"jrnl24103993"},"odcontenttypes":[],"odlanguages":[],"odnumberofitems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"officialname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Journal of Technology and Innovation"},"openairecompatibility":{"classid":"hostedBy","classname":"collected from a compatible aggregator","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"originalId":["issn__online::2410-3993"],"pid":[],"policies":[],"serviceprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"subjects":[],"versioning":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false}} -{"accessinfopackage":[],"citationguidelineurl":{"dataInfo":{"inferenceprovenance":null,"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"https://www.gbif.org/citation-guidelines"},"collectedfrom":[{"key":"10|openaire____::21f8a223b9925c2f87c404096080b046","value":"Registry of Research Data Repository"}],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"databaseaccesstype":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"open"},"dataprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"datasourcetype":{"classid":"datarepository::unknown","classname":"Data Repository","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"datauploadrestriction":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"other"},"datauploadtype":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"restricted"},"dateofcollection":"2019-02-10","englishname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Bavarian Natural History Collections - occurrence data"},"extraInfo":[],"id":"10|re3data_____::b105fa2123b1e2bc3dfff303454c6f72","lastupdatetimestamp":1626336932282,"latitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"longitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"missionstatementurl":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"http://www.snsb.info/"},"namespaceprefix":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"r3b105fa2123"},"odcontenttypes":[],"odlanguages":[],"odnumberofitems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"officialname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"DWB BioCASe Data Publication pipeline and RDF service"},"openairecompatibility":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"originalId":["re3data_____::r3d100012934"],"pid":[],"pidsystems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"DOI URN"},"policies":[],"qualitymanagementkind":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"yes"},"releasestartdate":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"2006-01-01"},"serviceprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":true},"subjects":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Life Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Plant Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Zoology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Evolution, Anthropology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Biology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Natural Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geology and Palaeontology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geochemistry, Mineralogy and Crystallography"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geosciences (including Geography)"}],"versioning":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":true},"websiteurl":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"http://www.snsb.info/dwb_biocase.html"}} \ No newline at end of file +{"accessinfopackage":[],"citationguidelineurl":{"dataInfo":{"inferenceprovenance":null,"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"https://www.gbif.org/citation-guidelines"},"collectedfrom":[{"key":"10|openaire____::21f8a223b9925c2f87c404096080b046","value":"Registry of Research Data Repository"}],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"databaseaccesstype":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"open"},"dataprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":false},"datasourcetype":{"classid":"datarepository::unknown","classname":"Data Repository","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"datauploadrestriction":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"other"},"datauploadtype":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"restricted"},"dateofcollection":"2019-02-10","englishname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"Bavarian Natural History Collections - occurrence data"},"extraInfo":[],"id":"10|re3data_____::b105fa2123b1e2bc3dfff303454c6f72","lastupdatetimestamp":1626336932282,"latitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"longitude":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"missionstatementurl":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"http://www.snsb.info/"},"namespaceprefix":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"r3b105fa2123"},"odcontenttypes":[],"odlanguages":[],"odnumberofitems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"0.0"},"officialname":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"DWB BioCASe Data Publication pipeline and RDF service"},"openairecompatibility":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"originalId":["re3data_____::r3d100012934"],"pid":[],"pidsystems":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"DOI URN"},"policies":[],"releasestartdate":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"2006-01-01"},"serviceprovider":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":true},"subjects":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Life Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Plant Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Zoology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Evolution, Anthropology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Biology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Natural Sciences"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geology and Palaeontology"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geochemistry, Mineralogy and Crystallography"},{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Geosciences (including Geography)"}],"versioning":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":true},"websiteurl":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.900"},"value":"http://www.snsb.info/dwb_biocase.html"}} \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasourceorganization_resultset_entry.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasourceorganization_resultset_entry.json index 06b0d483b..a41fac8b8 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasourceorganization_resultset_entry.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasourceorganization_resultset_entry.json @@ -1,6 +1,6 @@ [ { - "field": "datasource", + "field": "service", "type": "string", "value": "openaire____::revistasunicauca" }, diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json index 445334de5..3614c5266 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json @@ -1,6 +1,6 @@ [ { - "field": "datasourceid", + "field": "id", "type": "string", "value": "274269ac6f3b::2579-5449" }, @@ -268,13 +268,6 @@ "Research Data" ] }, - { - "field": "providedproducttypes", - "type": "array", - "value": [ - - ] - }, { "field": "jurisdiction", "type": "string", @@ -285,11 +278,6 @@ "type": "boolean", "value": true }, - { - "field": "knowledgegraph", - "type": "boolean", - "value": true - }, { "field": "contentpolicies", "type": "array", diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/sample/datasource/datasource_10.json.gz b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/sample/datasource/datasource_10.json.gz index 130dd4c36f3e824c6da8aba020b31729b26935c6..10a4ec591660e1ac2d455beaebc86e9918c92f8a 100644 GIT binary patch literal 2211 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 Bh;RS^ From 77bc9863e95ac55fcd5f12039e623d8686ae65b9 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 9 May 2022 16:06:04 +0200 Subject: [PATCH 53/83] [openorgs] mapping parent/child relations without massaging the semantic labels --- .../dhp/oa/graph/raw/MigrateDbEntitiesApplication.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index 552125307..63fa8b7e0 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -741,10 +741,7 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i final Relation r = new Relation(); r.setRelType(ORG_ORG_RELTYPE); r.setSubRelType(ModelConstants.RELATIONSHIP); - r - .setRelClass( - rs.getString("type").equalsIgnoreCase("parent") ? ModelConstants.IS_PARENT_OF - : ModelConstants.IS_CHILD_OF); + r.setRelClass(rs.getString("type")); r.setSource(orgId1); r.setTarget(orgId2); r.setCollectedfrom(collectedFrom); From 23334479bb7e5219ae14541e41abd7ee3903a3e2 Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Wed, 11 May 2022 13:05:52 +0300 Subject: [PATCH 54/83] removed yet another collab, added more orgs in monitor --- .../scripts/step16-createIndicatorsTables.sql | 24 ++++++------- .../scripts/step20-createMonitorDB.sql | 35 +++++++++++-------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql index c40618510..db40cf973 100755 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step16-createIndicatorsTables.sql @@ -82,18 +82,18 @@ on r.id= tmp.id; compute stats indi_funded_result_with_fundref; -create table indi_result_org_country_collab stored as parquet as -with tmp as -(select o.id as id, o.country , ro.id as result,r.type from organization o -join result_organization ro on o.id=ro.organization -join result r on r.id=ro.id where o.country <> 'UNKNOWN') -select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations -from tmp as o1 -join tmp as o2 on o1.result=o2.result -where o1.id<>o2.id and o1.country<>o2.country -group by o1.id, o1.type,o2.country; - -compute stats indi_result_org_country_collab; +-- create table indi_result_org_country_collab stored as parquet as +-- with tmp as +-- (select o.id as id, o.country , ro.id as result,r.type from organization o +-- join result_organization ro on o.id=ro.organization +-- join result r on r.id=ro.id where o.country <> 'UNKNOWN') +-- select o1.id org1,o2.country country2, o1.type, count(distinct o1.result) as collaborations +-- from tmp as o1 +-- join tmp as o2 on o1.result=o2.result +-- where o1.id<>o2.id and o1.country<>o2.country +-- group by o1.id, o1.type,o2.country; +-- +-- compute stats indi_result_org_country_collab; -- create table indi_result_org_collab stored as parquet as -- with tmp as diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql index bcc9f0b5d..4dd434101 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql @@ -18,20 +18,27 @@ create table TARGET.result stored as parquet as select * from SOURCE.result r where exists (select 1 from SOURCE.result_concepts rc where rc.id=r.id) union all select * from SOURCE.result r where exists (select 1 from SOURCE.result_organization ro where ro.id=r.id and ro.organization in ( - 'openorgs____::759d59f05d77188faee99b7493b46805', - 'openorgs____::b84450f9864182c67b8611b5593f4250', - 'openorgs____::d41cf6bd4ab1b1362a44397e0b95c975', - 'openorgs____::eadc8da90a546e98c03f896661a2e4d4', - 'openorgs____::d2a09b9d5eabb10c95f9470e172d05d2', - 'openorgs____::d169c7407dd417152596908d48c11460', - 'openorgs____::1ec924b1759bb16d0a02f2dad8689b21', - 'openorgs____::2fb1e47b4612688d9de9169d579939a7', - 'openorgs____::759d59f05d77188faee99b7493b46805', - 'openorgs____::cad284878801b9465fa51a95b1d779db', - 'openorgs____::eadc8da90a546e98c03f896661a2e4d4', - 'openorgs____::c0286313e36479eff8676dba9b724b40' - -- ,'openorgs____::c80a8243a5e5c620d7931c88d93bf17a' -- Paris Diderot - ) )) foo; + 'openorgs____::b84450f9864182c67b8611b5593f4250', --"Athena Research and Innovation Center In Information Communication & Knowledge Technologies', --ARC" + 'openorgs____::d41cf6bd4ab1b1362a44397e0b95c975', --National Research Council + 'openorgs____::d2a09b9d5eabb10c95f9470e172d05d2', --??? Not exists ?? + 'openorgs____::d169c7407dd417152596908d48c11460', --Masaryk University + 'openorgs____::1ec924b1759bb16d0a02f2dad8689b21', --University of Belgrade + 'openorgs____::2fb1e47b4612688d9de9169d579939a7', --University of Helsinki + 'openorgs____::759d59f05d77188faee99b7493b46805', --University of Minho + 'openorgs____::cad284878801b9465fa51a95b1d779db', --Universidad Politécnica de Madrid + 'openorgs____::eadc8da90a546e98c03f896661a2e4d4', --University of Göttingen + 'openorgs____::c0286313e36479eff8676dba9b724b40', --National and Kapodistrian University of Athens + -- 'openorgs____::c80a8243a5e5c620d7931c88d93bf17a', --Université Paris Diderot + 'openorgs____::c08634f0a6b0081c3dc6e6c93a4314f3', --Bielefeld University + 'openorgs____::6fc85e4a8f7ecaf4b0c738d010e967ea', --University of Southern Denmark + 'openorgs____::3d6122f87f9a97a99d8f6e3d73313720', --Humboldt-Universität zu Berlin + 'openorgs____::16720ada63d0fa8ca41601feae7d1aa5', --TU Darmstadt + 'openorgs____::ccc0a066b56d2cfaf90c2ae369df16f5', --KU Leuven + 'openorgs____::4c6f119632adf789746f0a057ed73e90', --University of the Western Cape + 'openorgs____::ec3665affa01aeafa28b7852c4176dbd', --Rudjer Boskovic Institute + 'openorgs____::5f31346d444a7f06a28c880fb170b0f6', --Ghent University + 'openorgs____::2dbe47117fd5409f9c61620813456632', --University of Luxembourg + 'openorgs____::6445d7758d3a40c4d997953b6632a368', --National Institute of Informatics (NII) ) )) foo; compute stats TARGET.result; create table TARGET.result_citations stored as parquet as select * from SOURCE.result_citations orig where exists (select 1 from TARGET.result r where r.id=orig.id); From 5d3b4a9c2529b12b2be1d62f137eff83e6accc0d Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 11 May 2022 14:13:06 +0200 Subject: [PATCH 55/83] [graph merge beta] merge datasource originalid, collectedfrom, and pid lists --- .../graph/merge/MergeGraphTableSparkJob.java | 31 ++++++++++++++++++- .../merge/MergeGraphTableSparkJobTest.java | 19 +++++++++++- .../dhp/oa/graph/merge/datasource_cris.json | 6 +++- .../graph/merge/datasource_openaire2.0.json | 5 ++- 4 files changed, 57 insertions(+), 4 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJob.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJob.java index 474944260..5f2cd6808 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJob.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJob.java @@ -5,6 +5,7 @@ import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; @@ -136,7 +137,7 @@ public class MergeGraphTableSparkJob { /** * Datasources involved in the merge operation doesn't obey to the infra precedence policy, but relies on a custom * behaviour that, given two datasources from beta and prod returns the one from prod with the highest - * compatibility among the two. + * compatibility among the two. Furthermore, the procedure merges the collectedfrom, originalId, and pid lists. * * @param p datasource from PROD * @param b datasource from BETA @@ -160,9 +161,37 @@ public class MergeGraphTableSparkJob { List list = Arrays.asList(dp.getOpenairecompatibility(), db.getOpenairecompatibility()); dp.setOpenairecompatibility(Collections.min(list, new DatasourceCompatibilityComparator())); + dp + .setCollectedfrom( + Stream + .concat( + Optional + .ofNullable(dp.getCollectedfrom()) + .map(Collection::stream) + .orElse(Stream.empty()), + Optional + .ofNullable(db.getCollectedfrom()) + .map(Collection::stream) + .orElse(Stream.empty())) + .distinct() // relies on KeyValue.equals + .collect(Collectors.toList())); + + dp.setOriginalId(mergeLists(dp.getOriginalId(), db.getOriginalId())); + dp.setPid(mergeLists(dp.getPid(), db.getPid())); + return (P) dp; } + private static final List mergeLists(final List... lists) { + return Arrays + .stream(lists) + .filter(Objects::nonNull) + .flatMap(List::stream) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + } + private static

P mergeWithPriorityToPROD(Optional

p, Optional b) { if (b.isPresent() & !p.isPresent()) { return (P) b.get(); diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJobTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJobTest.java index 2d28ee305..7dcb4bca4 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJobTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/merge/MergeGraphTableSparkJobTest.java @@ -2,6 +2,7 @@ package eu.dnetlib.dhp.oa.graph.merge; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.io.IOException; import java.util.Optional; @@ -25,7 +26,23 @@ class MergeGraphTableSparkJobTest { } @Test - void testMergeDatasources() throws IOException { + void testMerge() throws IOException { + Datasource d = MergeGraphTableSparkJob + .mergeDatasource( + d("datasource_cris.json"), + d("datasource_openaire2.0.json")); + + assertEquals("10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", d.getId()); + assertNotNull(d.getOriginalId()); + assertEquals(2, d.getOriginalId().size()); + assertNotNull(d.getCollectedfrom()); + assertEquals(2, d.getCollectedfrom().size()); + assertNotNull(d.getPid()); + assertEquals(1, d.getPid().size()); + } + + @Test + void testMergeCompatibility() throws IOException { assertEquals( "openaire-cris_1.1", MergeGraphTableSparkJob diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_cris.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_cris.json index 6f2b7aa7d..64627dd2b 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_cris.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_cris.json @@ -1 +1,5 @@ -{ "id": "10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", "openairecompatibility": { "classid": "openaire-cris_1.1" }} \ No newline at end of file +{ "id": "10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", "openairecompatibility": { "classid": "openaire-cris_1.1" }, + "originalId": ["eurocrisdris::1234"], + "collectedfrom": [{"key": "eurocrisdris::2b29d08e383ff4cd8a2b6b226ce37e38", "value": "Directory of Research Information System (DRIS)"}], + "pid": [{"value": "10.1010.xyx", "qualifier": {"classid": "doi"}}] +} \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_openaire2.0.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_openaire2.0.json index e2db47943..cb2916a27 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_openaire2.0.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/merge/datasource_openaire2.0.json @@ -1 +1,4 @@ -{ "id": "10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", "openairecompatibility": { "classid": "openaire2.0" }} \ No newline at end of file +{ "id": "10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", "openairecompatibility": { "classid": "openaire2.0" }, + "originalId": ["opendoar____::1234"], + "collectedfrom": [{"key": "openaire____::47ce9e9f4fad46e732cff06419ecaabb", "value": "OpenDOAR"}] +} \ No newline at end of file From ca8d26bcb49e7eca531fffff1d05338be411b9b2 Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Wed, 11 May 2022 15:29:57 +0200 Subject: [PATCH 56/83] added better filter for openCitations --- .../sx/graph/SparkConvertRDDtoDataset.scala | 13 +- .../dhp/sx/graph/pangaea/PangaeaUtils.scala | 136 ------------------ .../SparkGeneratePanagaeaDataset.scala | 58 -------- .../dhp/sx/pangaea/PangaeaTransformTest.scala | 29 ---- 4 files changed, 11 insertions(+), 225 deletions(-) delete mode 100644 dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/PangaeaUtils.scala delete mode 100644 dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/SparkGeneratePanagaeaDataset.scala delete mode 100644 dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/sx/pangaea/PangaeaTransformTest.scala diff --git a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala index f13c14da5..7c3a212ac 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala +++ b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala @@ -7,6 +7,7 @@ import org.apache.commons.io.IOUtils import org.apache.spark.SparkConf import org.apache.spark.sql.{Encoder, Encoders, SaveMode, SparkSession} import org.slf4j.{Logger, LoggerFactory} +import scala.collection.JavaConverters._ object SparkConvertRDDtoDataset { @@ -94,21 +95,29 @@ object SparkConvertRDDtoDataset { log.info("Converting Relation") val relationSemanticFilter = List( - "cites", - "iscitedby", +// "cites", +// "iscitedby", "merges", "ismergedin", "HasAmongTopNSimilarDocuments", "IsAmongTopNSimilarDocuments" ) + val rddRelation = spark.sparkContext .textFile(s"$sourcePath/relation") .map(s => mapper.readValue(s, classOf[Relation])) .filter(r => r.getDataInfo != null && r.getDataInfo.getDeletedbyinference == false) .filter(r => r.getSource.startsWith("50") && r.getTarget.startsWith("50")) + //filter OpenCitations relations + .filter(r => r.getCollectedfrom!= null && r.getCollectedfrom.size()>0 && !r.getCollectedfrom.asScala.exists(k => "opencitations".equalsIgnoreCase(k.getValue))) .filter(r => !relationSemanticFilter.exists(k => k.equalsIgnoreCase(r.getRelClass))) spark.createDataset(rddRelation).as[Relation].write.mode(SaveMode.Overwrite).save(s"$relPath") + + + + + } } diff --git a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/PangaeaUtils.scala b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/PangaeaUtils.scala deleted file mode 100644 index 23f4da6c7..000000000 --- a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/PangaeaUtils.scala +++ /dev/null @@ -1,136 +0,0 @@ -package eu.dnetlib.dhp.sx.graph.pangaea - -import org.apache.spark.sql.expressions.Aggregator -import org.apache.spark.sql.{Encoder, Encoders} -import org.json4s -import org.json4s.DefaultFormats -import org.json4s.jackson.JsonMethods.parse - -import java.util.regex.Pattern -import scala.language.postfixOps -import scala.xml.{Elem, Node, XML} - -case class PangaeaDataModel( - identifier: String, - title: List[String], - objectType: List[String], - creator: List[String], - publisher: List[String], - dataCenter: List[String], - subject: List[String], - language: String, - rights: String, - parent: String, - relation: List[String], - linkage: List[(String, String)] -) {} - -object PangaeaUtils { - - def toDataset(input: String): PangaeaDataModel = { - implicit lazy val formats: DefaultFormats.type = org.json4s.DefaultFormats - lazy val json: json4s.JValue = parse(input) - val xml = (json \ "xml").extract[String] - parseXml(xml) - } - - def findDOIInRelation(input: List[String]): List[String] = { - val pattern = Pattern.compile("\\b(10[.][0-9]{4,}(?:[.][0-9]+)*\\/(?:(?![\"&\\'<>])\\S)+)\\b") - input - .map(i => { - val matcher = pattern.matcher(i) - if (matcher.find()) - matcher.group(0) - else - null - }) - .filter(i => i != null) - } - - def attributeOpt(attribute: String, node: Node): Option[String] = - node.attribute(attribute) flatMap (_.headOption) map (_.text) - - def extractLinkage(node: Elem): List[(String, String)] = { - (node \ "linkage") - .map(n => (attributeOpt("type", n), n.text)) - .filter(t => t._1.isDefined) - .map(t => (t._1.get, t._2))(collection.breakOut) - } - - def parseXml(input: String): PangaeaDataModel = { - val xml = XML.loadString(input) - - val identifier = (xml \ "identifier").text - val title: List[String] = (xml \ "title").map(n => n.text)(collection.breakOut) - val pType: List[String] = (xml \ "type").map(n => n.text)(collection.breakOut) - val creators: List[String] = (xml \ "creator").map(n => n.text)(collection.breakOut) - val publisher: List[String] = (xml \ "publisher").map(n => n.text)(collection.breakOut) - val dataCenter: List[String] = (xml \ "dataCenter").map(n => n.text)(collection.breakOut) - val subject: List[String] = (xml \ "subject").map(n => n.text)(collection.breakOut) - val language = (xml \ "language").text - val rights = (xml \ "rights").text - val parentIdentifier = (xml \ "parentIdentifier").text - val relation: List[String] = (xml \ "relation").map(n => n.text)(collection.breakOut) - val relationFiltered = findDOIInRelation(relation) - val linkage: List[(String, String)] = extractLinkage(xml) - - PangaeaDataModel( - identifier, - title, - pType, - creators, - publisher, - dataCenter, - subject, - language, - rights, - parentIdentifier, - relationFiltered, - linkage - ) - } - - def getDatasetAggregator(): Aggregator[(String, PangaeaDataModel), PangaeaDataModel, PangaeaDataModel] = - new Aggregator[(String, PangaeaDataModel), PangaeaDataModel, PangaeaDataModel] { - - override def zero: PangaeaDataModel = null - - override def reduce(b: PangaeaDataModel, a: (String, PangaeaDataModel)): PangaeaDataModel = { - if (b == null) - a._2 - else { - if (a == null) - b - else { - if (b.title != null && b.title.nonEmpty) - b - else - a._2 - - } - } - } - - override def merge(b1: PangaeaDataModel, b2: PangaeaDataModel): PangaeaDataModel = { - if (b1 == null) - b2 - else { - if (b2 == null) - b1 - else { - if (b1.title != null && b1.title.nonEmpty) - b1 - else - b2 - - } - } - } - override def finish(reduction: PangaeaDataModel): PangaeaDataModel = reduction - - override def bufferEncoder: Encoder[PangaeaDataModel] = Encoders.kryo[PangaeaDataModel] - - override def outputEncoder: Encoder[PangaeaDataModel] = Encoders.kryo[PangaeaDataModel] - } - -} diff --git a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/SparkGeneratePanagaeaDataset.scala b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/SparkGeneratePanagaeaDataset.scala deleted file mode 100644 index 8ff8a8b1a..000000000 --- a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/pangaea/SparkGeneratePanagaeaDataset.scala +++ /dev/null @@ -1,58 +0,0 @@ -package eu.dnetlib.dhp.sx.graph.pangaea - -import eu.dnetlib.dhp.application.ArgumentApplicationParser -import org.apache.spark.rdd.RDD -import org.apache.spark.sql.{Encoder, Encoders, SaveMode, SparkSession} -import org.apache.spark.{SparkConf, SparkContext} -import org.slf4j.{Logger, LoggerFactory} -import scala.collection.JavaConverters._ - -import scala.io.Source - -object SparkGeneratePanagaeaDataset { - - def main(args: Array[String]): Unit = { - val logger: Logger = LoggerFactory.getLogger(getClass) - val conf: SparkConf = new SparkConf() - val parser = new ArgumentApplicationParser( - Source - .fromInputStream( - getClass.getResourceAsStream("/eu/dnetlib/dhp/sx/pangaea/pangaea_to_dataset.json") - ) - .mkString - ) - parser.parseArgument(args) - - val spark: SparkSession = - SparkSession - .builder() - .config(conf) - .appName(SparkGeneratePanagaeaDataset.getClass.getSimpleName) - .master(parser.get("master")) - .getOrCreate() - - parser.getObjectMap.asScala.foreach(s => logger.info(s"${s._1} -> ${s._2}")) - logger.info("Converting sequential file into Dataset") - val sc: SparkContext = spark.sparkContext - - val workingPath: String = parser.get("workingPath") - - implicit val pangaeaEncoders: Encoder[PangaeaDataModel] = Encoders.kryo[PangaeaDataModel] - - val inputRDD: RDD[PangaeaDataModel] = - sc.textFile(s"$workingPath/update").map(s => PangaeaUtils.toDataset(s)) - - spark - .createDataset(inputRDD) - .as[PangaeaDataModel] - .map(s => (s.identifier, s))(Encoders.tuple(Encoders.STRING, pangaeaEncoders)) - .groupByKey(_._1)(Encoders.STRING) - .agg(PangaeaUtils.getDatasetAggregator().toColumn) - .map(s => s._2) - .write - .mode(SaveMode.Overwrite) - .save(s"$workingPath/dataset") - - } - -} diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/sx/pangaea/PangaeaTransformTest.scala b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/sx/pangaea/PangaeaTransformTest.scala deleted file mode 100644 index b90827e81..000000000 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/sx/pangaea/PangaeaTransformTest.scala +++ /dev/null @@ -1,29 +0,0 @@ -package eu.dnetlib.dhp.sx.pangaea - -import eu.dnetlib.dhp.sx.graph.pangaea.PangaeaUtils -import org.junit.jupiter.api.Test - -import java.util.TimeZone -import java.text.SimpleDateFormat -import java.util.Date -import scala.io.Source -class PangaeaTransformTest { - - - - @Test - def test_dateStamp() :Unit ={ - - - - val d = new Date() - - val s:String = s"${new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")format d}Z" - println(s) - - - val xml = Source.fromInputStream(getClass.getResourceAsStream("input.xml")).mkString - println(PangaeaUtils.parseXml(xml)) - } - -} From c25134f28d8586591284a1740f8bd89b7cc0b0d5 Mon Sep 17 00:00:00 2001 From: antleb Date: Thu, 12 May 2022 14:55:47 +0300 Subject: [PATCH 57/83] fixed typo --- .../graph/stats/oozie_app/scripts/step20-createMonitorDB.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql index 4dd434101..2dde7171f 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql @@ -38,7 +38,8 @@ create table TARGET.result stored as parquet as 'openorgs____::ec3665affa01aeafa28b7852c4176dbd', --Rudjer Boskovic Institute 'openorgs____::5f31346d444a7f06a28c880fb170b0f6', --Ghent University 'openorgs____::2dbe47117fd5409f9c61620813456632', --University of Luxembourg - 'openorgs____::6445d7758d3a40c4d997953b6632a368', --National Institute of Informatics (NII) ) )) foo; + 'openorgs____::6445d7758d3a40c4d997953b6632a368', --National Institute of Informatics (NII) + ) )) foo; compute stats TARGET.result; create table TARGET.result_citations stored as parquet as select * from SOURCE.result_citations orig where exists (select 1 from TARGET.result r where r.id=orig.id); From e4eac1d20bd8981939fe4efbbd94c26d680d6999 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 13 May 2022 11:01:33 +0200 Subject: [PATCH 58/83] [EOSC TAG] added code to remove EOSC Jupyter Notebook from subjects and put EOSC as classid in the qualifier --- .../java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 11 +++++++++-- .../dhp/sx/graph/SparkConvertRDDtoDataset.scala | 12 +++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index 561e1d57e..e8c79e11d 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -30,7 +30,7 @@ public class SparkEoscTag { public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); public static final Qualifier EOSC_QUALIFIER = OafMapperUtils .qualifier( - "eosc", + "EOSC", "European Open Science Cloud", ModelConstants.DNET_SUBJECT_TYPOLOGIES, ModelConstants.DNET_SUBJECT_TYPOLOGIES); public static final DataInfo EOSC_DATAINFO = OafMapperUtils @@ -95,7 +95,14 @@ public class SparkEoscTag { if (containsCriteriaNotebook(s)) { sbject.add(EOSC_NOTEBOOK); - + if (sbject.stream().anyMatch(sb -> sb.getValue().equals("EOSC Jupyter Notebook"))){ + sbject = sbject.stream().map(sb -> { + if (sb.getValue().equals("EOSC Jupyter Notebook")){ + return null; + } + return sb; + }).filter(Objects::nonNull).collect(Collectors.toList()); + } } if (containsCriteriaGalaxy(s)) { sbject.add(EOSC_GALAXY); diff --git a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala index 7c3a212ac..bd970a5cf 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala +++ b/dhp-workflows/dhp-graph-mapper/src/main/scala/eu/dnetlib/dhp/sx/graph/SparkConvertRDDtoDataset.scala @@ -103,21 +103,19 @@ object SparkConvertRDDtoDataset { "IsAmongTopNSimilarDocuments" ) - val rddRelation = spark.sparkContext .textFile(s"$sourcePath/relation") .map(s => mapper.readValue(s, classOf[Relation])) .filter(r => r.getDataInfo != null && r.getDataInfo.getDeletedbyinference == false) .filter(r => r.getSource.startsWith("50") && r.getTarget.startsWith("50")) //filter OpenCitations relations - .filter(r => r.getCollectedfrom!= null && r.getCollectedfrom.size()>0 && !r.getCollectedfrom.asScala.exists(k => "opencitations".equalsIgnoreCase(k.getValue))) + .filter(r => + r.getCollectedfrom != null && r.getCollectedfrom.size() > 0 && !r.getCollectedfrom.asScala.exists(k => + "opencitations".equalsIgnoreCase(k.getValue) + ) + ) .filter(r => !relationSemanticFilter.exists(k => k.equalsIgnoreCase(r.getRelClass))) spark.createDataset(rddRelation).as[Relation].write.mode(SaveMode.Overwrite).save(s"$relPath") - - - - - } } From 3fc9efeab6559edc2fd0ad839473a6bbc03c89f5 Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Fri, 13 May 2022 14:28:13 +0300 Subject: [PATCH 59/83] fixed typo, addded open citations and apcs in monitor --- .../oozie_app/scripts/step20-createMonitorDB.sql | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql index 4dd434101..3cf155869 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql @@ -38,15 +38,25 @@ create table TARGET.result stored as parquet as 'openorgs____::ec3665affa01aeafa28b7852c4176dbd', --Rudjer Boskovic Institute 'openorgs____::5f31346d444a7f06a28c880fb170b0f6', --Ghent University 'openorgs____::2dbe47117fd5409f9c61620813456632', --University of Luxembourg - 'openorgs____::6445d7758d3a40c4d997953b6632a368', --National Institute of Informatics (NII) ) )) foo; + 'openorgs____::6445d7758d3a40c4d997953b6632a368' --National Institute of Informatics (NII) + ) )) foo; compute stats TARGET.result; create table TARGET.result_citations stored as parquet as select * from SOURCE.result_citations orig where exists (select 1 from TARGET.result r where r.id=orig.id); compute stats TARGET.result_citations; +create table TARGET.result_references_oc stored as parquet as select * from SOURCE.result_references_oc orig where exists (select 1 from TARGET.result r where r.id=orig.id); +compute stats TARGET.result_references_oc; + +create table TARGET.result_citations_oc stored as parquet as select * from SOURCE.result_citations_oc orig where exists (select 1 from TARGET.result r where r.id=orig.id); +compute stats TARGET.result_citations_oc; + create table TARGET.result_classifications stored as parquet as select * from SOURCE.result_classifications orig where exists (select 1 from TARGET.result r where r.id=orig.id); compute stats TARGET.result_classifications; +create table TARGET.result_apc stored as parquet as select * from SOURCE.result_apc orig where exists (select 1 from TARGET.result r where r.id=orig.id); +compute stats TARGET.result_apc; + create table TARGET.result_concepts stored as parquet as select * from SOURCE.result_concepts orig where exists (select 1 from TARGET.result r where r.id=orig.id); compute stats TARGET.result_concepts; From 0dc33ea391f033578e890a8335dc28d36b8128d8 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 16 May 2022 09:20:30 +0200 Subject: [PATCH 60/83] [openorgs] fixed parent/child query, using the correct semantic labels --- .../dnetlib/dhp/oa/graph/sql/queryParentChildRelsOpenOrgs.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryParentChildRelsOpenOrgs.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryParentChildRelsOpenOrgs.sql index 388fee3f5..0ac843401 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryParentChildRelsOpenOrgs.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryParentChildRelsOpenOrgs.sql @@ -10,4 +10,4 @@ SELECT 'OpenOrgs Database' AS collectedfromname, 'sysimport:crosswalk:entityregistry@@@dnet:provenance_actions' AS provenanceaction FROM relationships -WHERE reltype = 'Child' OR reltype = 'Parent' \ No newline at end of file +WHERE reltype = 'IsChildOf' OR reltype = 'IsParentOf' \ No newline at end of file From 4c50f35c8bc41530f9f2dec095a11f3b3b2eaf9b Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Mon, 16 May 2022 10:29:36 +0200 Subject: [PATCH 61/83] update publication Date format --- .../resources/eu/dnetlib/dhp/sx/provision/scholix_index.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-provision/src/main/resources/eu/dnetlib/dhp/sx/provision/scholix_index.json b/dhp-workflows/dhp-graph-provision/src/main/resources/eu/dnetlib/dhp/sx/provision/scholix_index.json index 93032712a..86e80206f 100644 --- a/dhp-workflows/dhp-graph-provision/src/main/resources/eu/dnetlib/dhp/sx/provision/scholix_index.json +++ b/dhp-workflows/dhp-graph-provision/src/main/resources/eu/dnetlib/dhp/sx/provision/scholix_index.json @@ -41,7 +41,8 @@ } }, "publicationDate": { - "type": "keyword" + "type": "date", + "format": "yyyy-MM-dd" }, "relationship": { "properties": { From 997c50078e01e3d64897661cd40fb96421c5e466 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 16 May 2022 12:07:40 +0200 Subject: [PATCH 62/83] [graph grouping] drop relation target path before copying from source --- .../dnetlib/dhp/oa/graph/group/oozie_app/workflow.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/group/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/group/oozie_app/workflow.xml index f77b46105..888a873c5 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/group/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/group/oozie_app/workflow.xml @@ -283,7 +283,15 @@ - + + + + + + + + + From d098ad0d9357e40dff1e0e2d8b07777dca5057a5 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 16 May 2022 15:53:27 +0200 Subject: [PATCH 63/83] [hb patch] updated map --- .../eu/dnetlib/dhp/datacite/hostedBy_map.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/datacite/hostedBy_map.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/datacite/hostedBy_map.json index 947a9a255..ecae6811a 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/datacite/hostedBy_map.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/datacite/hostedBy_map.json @@ -15,7 +15,7 @@ "official_name": "Aperta TÜBİTAK Open Archive" }, "BL.CAM": { - "openaire_id": "re3data_____::r3d100010620", + "openaire_id": "opendoar____::109", "datacite_name": "Apollo", "official_name": "Apollo" }, @@ -196,7 +196,7 @@ }, "CSIC.DIGITAL": { "openaire_id": "re3data_____::r3d100011076", - "datacite_name": "DIGITAL.CSIC", + "datacite_name": "Digital CSIC", "official_name": "DIGITAL.CSIC" }, "BL.DRI": { @@ -644,6 +644,11 @@ "datacite_name": "PANGAEA", "official_name": "PANGAEA" }, + "TIB.PANGAEA": { + "openaire_id": "re3data_____::r3d100010134", + "datacite_name": "PANGAEA", + "official_name": "PANGAEA" + }, "NASAPDS.NASAPDS": { "openaire_id": "re3data_____::r3d100010121", "datacite_name": "PDS", @@ -896,7 +901,7 @@ }, "FIGSHARE.UCT": { "openaire_id": "re3data_____::r3d100012633", - "datacite_name": "ZivaHub", + "datacite_name": "University of Cape Town (UCT)", "official_name": "ZivaHub" }, "BL.UCLAN": { @@ -1030,9 +1035,9 @@ "official_name": "ZBW Journal Data Archive" }, "CERN.ZENODO": { - "openaire_id": "re3data_____::r3d100010468", + "openaire_id": "opendoar____::2659", "datacite_name": "Zenodo", - "official_name": "Zenodo" + "official_name": "ZENODO" }, "ZBW.ZEW": { "openaire_id": "re3data_____::r3d100010399", From f5207885e371e8e538069d2b301094bb0af185b0 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Tue, 17 May 2022 15:09:22 +0200 Subject: [PATCH 64/83] [EOSCTag] changed code to remove EOSC Jupyter Notebook and modified test to exclude galaxy + software from the tagging for Galaxy --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 5 +++-- .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 21 ++++++------------- .../eosctag/jupyter/software/software_10.json | 2 +- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index e8c79e11d..b9de5dd11 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -95,13 +95,14 @@ public class SparkEoscTag { if (containsCriteriaNotebook(s)) { sbject.add(EOSC_NOTEBOOK); - if (sbject.stream().anyMatch(sb -> sb.getValue().equals("EOSC Jupyter Notebook"))){ + if (sbject.stream().anyMatch(sb -> sb.getValue().equals("EOSC Jupyter Notebook"))) { sbject = sbject.stream().map(sb -> { - if (sb.getValue().equals("EOSC Jupyter Notebook")){ + if (sb.getValue().equals("EOSC Jupyter Notebook")) { return null; } return sb; }).filter(Objects::nonNull).collect(Collectors.toList()); + s.setSubject(sbject); } } if (containsCriteriaGalaxy(s)) { diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java index 55d3939e1..1ea254157 100644 --- a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -132,7 +132,7 @@ public class EOSCTagJobTest { Assertions .assertEquals( - 2, tmp + 1, tmp .filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")) .collect() .get(0) @@ -326,7 +326,7 @@ public class EOSCTagJobTest { Assertions .assertEquals( - 2, + 1, tmp .filter( s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))) @@ -352,21 +352,12 @@ public class EOSCTagJobTest { Assertions .assertEquals( - 6, tmp + 5, tmp .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) .collect() .get(0) .getSubject() .size()); - Assertions - .assertTrue( - tmp - .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) - .collect() - .get(0) - .getSubject() - .stream() - .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); Assertions .assertEquals( @@ -394,7 +385,7 @@ public class EOSCTagJobTest { Assertions .assertEquals( - 2, + 1, orp .filter( s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))) @@ -438,14 +429,14 @@ public class EOSCTagJobTest { Assertions .assertEquals( - 3, orp + 2, orp .filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")) .collect() .get(0) .getSubject() .size()); Assertions - .assertTrue( + .assertFalse( orp .filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")) .collect() diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json index 2439dc1b6..2acc856a4 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json @@ -1,4 +1,4 @@ -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "jupyter Notebooks","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "EOSC Jupyter Notebook","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"python","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"python","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} From c298c148cb285e73fab8079d63f6bbef4670f653 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 20 May 2022 09:11:46 +0200 Subject: [PATCH 65/83] [CountryPropagation] fix NPE issue --- .../SparkCountryPropagationJob.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java index 56aa953b4..25cd82248 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java @@ -102,21 +102,27 @@ public class SparkCountryPropagationJob { private static MapFunction, R> getCountryMergeFn() { return t -> { Optional.ofNullable(t._2()).ifPresent(r -> { - t._1().getCountry().addAll(merge(t._1().getCountry(), r.getCountrySet())); + if(Optional.ofNullable(t._1().getCountry()).isPresent()) + t._1().getCountry().addAll(merge(t._1().getCountry(), r.getCountrySet())); + else + t._1().setCountry(merge(null, t._2().getCountrySet())); }); return t._1(); }; } private static List merge(List c1, List c2) { - HashSet countries = c1 - .stream() - .map(Qualifier::getClassid) - .collect(Collectors.toCollection(HashSet::new)); + HashSet countries = new HashSet<>(); + if(Optional.ofNullable(c1).isPresent()){ + countries = c1.stream().map(Qualifier::getClassid) + .collect(Collectors.toCollection(HashSet::new)); + } + + HashSet finalCountries = countries; return c2 .stream() - .filter(c -> !countries.contains(c.getClassid())) + .filter(c -> !finalCountries.contains(c.getClassid())) .map(c -> getCountry(c.getClassid(), c.getClassname())) .collect(Collectors.toList()); } From 5e0b8f9b5fa27dc7e595c65753a682b12ec3e553 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 20 May 2022 09:15:53 +0200 Subject: [PATCH 66/83] [CountryPropagation] refactoring --- .../SparkCountryPropagationJob.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java index 25cd82248..d9f6433a0 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/SparkCountryPropagationJob.java @@ -102,7 +102,7 @@ public class SparkCountryPropagationJob { private static MapFunction, R> getCountryMergeFn() { return t -> { Optional.ofNullable(t._2()).ifPresent(r -> { - if(Optional.ofNullable(t._1().getCountry()).isPresent()) + if (Optional.ofNullable(t._1().getCountry()).isPresent()) t._1().getCountry().addAll(merge(t._1().getCountry(), r.getCountrySet())); else t._1().setCountry(merge(null, t._2().getCountrySet())); @@ -113,11 +113,12 @@ public class SparkCountryPropagationJob { private static List merge(List c1, List c2) { HashSet countries = new HashSet<>(); - if(Optional.ofNullable(c1).isPresent()){ - countries = c1.stream().map(Qualifier::getClassid) - .collect(Collectors.toCollection(HashSet::new)); - } - + if (Optional.ofNullable(c1).isPresent()) { + countries = c1 + .stream() + .map(Qualifier::getClassid) + .collect(Collectors.toCollection(HashSet::new)); + } HashSet finalCountries = countries; return c2 From db088cc69c6878e5242e5edb8b8d1ebb894a3136 Mon Sep 17 00:00:00 2001 From: antleb Date: Tue, 7 Jun 2022 04:04:28 +0300 Subject: [PATCH 67/83] fixed *_organization tables --- .../eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step7.sql | 1 + .../eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step8.sql | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step7.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step7.sql index e1c36cbc0..b5eba6111 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step7.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step7.sql @@ -127,6 +127,7 @@ CREATE TABLE ${stats_db_name}.result_organization STORED AS PARQUET AS SELECT substr(r.target, 4) AS id, substr(r.source, 4) AS organization FROM ${openaire_db_name}.relation r WHERE r.reltype = 'resultOrganization' + and r.target like '50|%' and r.datainfo.deletedbyinference = false and r.datainfo.invisible=false; CREATE TABLE ${stats_db_name}.result_projects STORED AS PARQUET AS diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step8.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step8.sql index fa3eca1a9..6fa0e6fdf 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step8.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step8.sql @@ -93,7 +93,7 @@ where d.datainfo.deletedbyinference=false and d.datainfo.invisible=false; CREATE TABLE ${stats_db_name}.datasource_organizations STORED AS PARQUET AS SELECT substr(r.target, 4) AS id, substr(r.source, 4) AS organization FROM ${openaire_db_name}.relation r -WHERE r.reltype = 'datasourceOrganization' and r.datainfo.deletedbyinference = false and r.datainfo.invisible=false; +WHERE r.reltype = 'datasourceOrganization' and r.datainfo.deletedbyinference = false and r.target like '20|%' and r.datainfo.invisible=false; -- datasource sources: -- where the datasource info have been collected from. From 4b6913787bb48b92c9ae8b6f4cab0b59392798f9 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 8 Jun 2022 14:55:19 +0200 Subject: [PATCH 68/83] [DOI-BOOST] added one method in test of crossref mapping to aof and one resource. Related to ticket 7807 --- .../doiboost/crossref/article_nojournal.json | 368 ++++++++++++++++++ .../crossref/CrossrefMappingTest.scala | 28 ++ 2 files changed, 396 insertions(+) create mode 100644 dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/article_nojournal.json diff --git a/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/article_nojournal.json b/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/article_nojournal.json new file mode 100644 index 000000000..48a3777b7 --- /dev/null +++ b/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/article_nojournal.json @@ -0,0 +1,368 @@ + +{ + + "indexed": { + "date-parts": [ + [ + 2022, + 4, + 22 + ] + ], + "date-time": "2022-04-22T15:30:54Z", + "timestamp": 1650641454218 + }, + "reference-count": 31, + "publisher": "Cambridge University Press (CUP)", + "issue": "2", + "license": [ + { + "start": { + "date-parts": [ + [ + 2017, + 8, + 22 + ] + ], + "date-time": "2017-08-22T00:00:00Z", + "timestamp": 1503360000000 + }, + "content-version": "unspecified", + "delay-in-days": 21, + "URL": "https://www.cambridge.org/core/terms" + } + ], + "content-domain": { + "domain": [ + + ], + "crossmark-restriction": false + }, + "short-container-title": [ + "Dance Res. J." + ], + "published-print": { + "date-parts": [ + [ + 2017, + 8 + ] + ] + }, + "abstract": "Gaga, a practice developed by Israeli choreographer Ohad Naharin, is one of the most popular training methods on the global dance market. Structured as a metatechnique, or a system for negotiating techniques within one's body, Gaga teaches students to both draw on and reject multiple movement techniques to create their own movement. I consider how the paradigms of choreography, technique, and improvisation are blurred together in the pedagogical model of a metatechnique and how training dancers to shift between choreographer, dancer, and improviser has significant ramifications for understanding their agency. The metatechnique model of Gaga falls in line with neoliberal values of efficiency and a wide range of skills and knowledge; this analysis provides an understanding of recent trends in dance training in relation to contemporary political and socioeconomic structures.", + "DOI": "10.1017/s0149767717000183", + "type": "journal-article", + "created": { + "date-parts": [ + [ + 2017, + 8, + 22 + ] + ], + "date-time": "2017-08-22T13:32:38Z", + "timestamp": 1503408758000 + }, + "page": "26-43", + "source": "Crossref", + "is-referenced-by-count": 10, + "title": [ + "Gaga as Metatechnique: Negotiating Choreography, Improvisation, and Technique in a Neoliberal Dance Market" + ], + "prefix": "10.1017", + "volume": "49", + "author": [ + { + "given": "Meghan", + "family": "Quinlan", + "sequence": "first", + "affiliation": [ + + ] + } + ], + "member": "56", + "published-online": { + "date-parts": [ + [ + 2017, + 8, + 22 + ] + ] + }, + "reference": [ + { + "key": "S0149767717000183_ref22", + "first-page": "38", + "article-title": "‘I Don't Want to do African … What About My Technique?’: Transforming Dancing Places into Spaces in the Academy", + "volume": "4", + "author": "Monroe", + "year": "2011", + "journal-title": "The Journal of Pan African Studies" + }, + { + "key": "S0149767717000183_ref8", + "volume-title": "Discipline and Punish: The Birth of the Prison", + "author": "Foucault", + "year": "1995" + }, + { + "key": "S0149767717000183_ref24", + "volume-title": "Sharing the Dance: Contact Improvisation and American Culture", + "author": "Novack", + "year": "1990" + }, + { + "key": "S0149767717000183_ref26", + "doi-asserted-by": "publisher", + "DOI": "10.1215/9780822387879" + }, + { + "key": "S0149767717000183_ref10", + "doi-asserted-by": "publisher", + "DOI": "10.1080/01472526.2015.1085759" + }, + { + "key": "S0149767717000183_ref4", + "doi-asserted-by": "crossref", + "first-page": "235", + "volume-title": "Meaning in Motion", + "author": "Foster", + "year": "1997", + "DOI": "10.1215/9780822397281-013" + }, + { + "key": "S0149767717000183_ref17", + "doi-asserted-by": "publisher", + "DOI": "10.1093/acprof:oso/9780199360369.001.0001" + }, + { + "key": "S0149767717000183_ref30", + "volume-title": "The Precariat: The New Dangerous Class", + "author": "Standing", + "year": "2011" + }, + { + "key": "S0149767717000183_ref7", + "volume-title": "Choreographing Empathy: Kinesthesia in Performance", + "author": "Foster", + "year": "2011" + }, + { + "key": "S0149767717000183_ref14", + "volume-title": "A Brief History of Neoliberalism", + "author": "Harvey", + "year": "2007" + }, + { + "key": "S0149767717000183_ref27", + "unstructured": "Quinlan Meghan . 2016. “Gaga as Politics: A Case Study of Contemporary Dance Training.” PhD diss., University of California, Riverside." + }, + { + "key": "S0149767717000183_ref11", + "first-page": "xiii", + "volume-title": "Taken by Surprise: A Dance Improvisation Reader", + "author": "Gere", + "year": "2003" + }, + { + "key": "S0149767717000183_ref13", + "volume-title": "Declaration", + "author": "Hardt", + "year": "2012" + }, + { + "key": "S0149767717000183_ref29", + "doi-asserted-by": "publisher", + "DOI": "10.1057/9780230236844_9" + }, + { + "key": "S0149767717000183_ref5", + "doi-asserted-by": "publisher", + "DOI": "10.1057/9780230236844_6" + }, + { + "key": "S0149767717000183_ref28", + "doi-asserted-by": "publisher", + "DOI": "10.1017/S0149767700000528" + }, + { + "key": "S0149767717000183_ref12", + "doi-asserted-by": "publisher", + "DOI": "10.3998/mpub.287881" + }, + { + "key": "S0149767717000183_ref18", + "first-page": "135", + "volume-title": "Taken by Surprise: A Dance Improvisation Reader", + "author": "Marks", + "year": "2003" + }, + { + "key": "S0149767717000183_ref3", + "doi-asserted-by": "crossref", + "volume-title": "Bodies That Matter: On the Discursive Limits of Sex", + "author": "Butler", + "year": "2011", + "DOI": "10.4324/9780203828274" + }, + { + "key": "S0149767717000183_ref32", + "volume-title": "Choreographing Difference: The Body and Identity in Contemporary Dance", + "author": "Albright", + "year": "1997" + }, + { + "key": "S0149767717000183_ref16", + "doi-asserted-by": "publisher", + "DOI": "10.1017/S0149767714000163" + }, + { + "key": "S0149767717000183_ref15", + "doi-asserted-by": "publisher", + "DOI": "10.2307/1477803" + }, + { + "key": "S0149767717000183_ref21", + "first-page": "455", + "volume-title": "Incorporations", + "author": "Mauss", + "year": "1992" + }, + { + "key": "S0149767717000183_ref1", + "volume-title": "The Body Eclectic: Evolving Practices in Dance Training", + "author": "Bales", + "year": "2008" + }, + { + "key": "S0149767717000183_ref9", + "unstructured": "Gaga Movement Ltd. 2016. Gaga People. Dancers. Accessed June 28, 2016. http://gagapeople.com/english/." + }, + { + "key": "S0149767717000183_ref19", + "volume-title": "Critical Moves: Dance Studies in Theory and Politics", + "author": "Martin", + "year": "1998" + }, + { + "key": "S0149767717000183_ref2", + "volume-title": "Undoing the Demos: Neoliberalism's Stealth Revolution", + "author": "Brown", + "year": "2015" + }, + { + "key": "S0149767717000183_ref20", + "doi-asserted-by": "publisher", + "DOI": "10.1162/DRAM_a_00214" + }, + { + "key": "S0149767717000183_ref6", + "doi-asserted-by": "publisher", + "DOI": "10.1215/01610775-2009-016" + }, + { + "key": "S0149767717000183_ref23", + "doi-asserted-by": "publisher", + "DOI": "10.1093/acprof:oso/9780190201661.001.0001" + }, + { + "key": "S0149767717000183_ref25", + "volume-title": "Flexible Citizenship: The Cultural Logics of Transnationality", + "author": "Ong", + "year": "1999" + } + ], + "container-title": [ + "Dance Research Journal" + ], + "original-title": [ + + ], + "language": "en", + "link": [ + { + "URL": "https://www.cambridge.org/core/services/aop-cambridge-core/content/view/S0149767717000183", + "content-type": "unspecified", + "content-version": "vor", + "intended-application": "similarity-checking" + } + ], + "deposited": { + "date-parts": [ + [ + 2020, + 10, + 16 + ] + ], + "date-time": "2020-10-16T01:00:32Z", + "timestamp": 1602810032000 + }, + "score": 1, + "resource": { + "primary": { + "URL": "https://www.cambridge.org/core/product/identifier/S0149767717000183/type/journal_article" + } + }, + "subtitle": [ + + ], + "short-title": [ + + ], + "issued": { + "date-parts": [ + [ + 2017, + 8 + ] + ] + }, + "references-count": 31, + "journal-issue": { + "issue": "2", + "published-print": { + "date-parts": [ + [ + 2017, + 8 + ] + ] + } + }, + "alternative-id": [ + "S0149767717000183" + ], + "URL": "http://dx.doi.org/10.1017/s0149767717000183", + "relation": { + + }, + "ISSN": [ + "0149-7677", + "1940-509X" + ], + "issn-type": [ + { + "value": "0149-7677", + "type": "print" + }, + { + "value": "1940-509X", + "type": "electronic" + } + ], + "subject": [ + "Visual Arts and Performing Arts" + ], + "published": { + "date-parts": [ + [ + 2017, + 8 + ] + ] + } + } diff --git a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala index 78ed375c6..30928fdd0 100644 --- a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala +++ b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala @@ -473,6 +473,34 @@ class CrossrefMappingTest { }) + } + + @Test + def testConvertFromCrossRef2OafIssue(): Unit = { + val json = Source + .fromInputStream(getClass.getResourceAsStream("/eu/dnetlib/doiboost/crossref/article_nojournal.json")) + .mkString + assertNotNull(json) + + assertFalse(json.isEmpty); + + val resultList: List[Oaf] = Crossref2Oaf.convert(json) + + assertTrue(resultList.nonEmpty) + + val items = resultList.filter(p => p.isInstanceOf[Publication]) + + assert(items.nonEmpty) + assert(items.size == 1) + val pub: Publication = items.head.asInstanceOf[Publication] + + assertNotNull(pub.getJournal.getIssnPrinted) + assertNotNull(pub.getJournal.getIssnOnline) + assertNotNull(pub.getJournal.getName) + + + + } @Test From 574492c659ea7a6d8e54f4332ba76a6ad45555fd Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Thu, 9 Jun 2022 15:48:13 +0300 Subject: [PATCH 69/83] removed double result_apc table creation from monitor --- .../graph/stats/oozie_app/scripts/step20-createMonitorDB.sql | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql index 3cf155869..7412910a9 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step20-createMonitorDB.sql @@ -107,11 +107,6 @@ compute stats TARGET.result_sources; create table TARGET.result_topics stored as parquet as select * from SOURCE.result_topics orig where exists (select 1 from TARGET.result r where r.id=orig.id); compute stats TARGET.result_topics; -create table TARGET.result_apc stored as parquet as select * from SOURCE.result_apc orig where exists (select 1 from TARGET.result r where r.id=orig.id); -compute stats TARGET.result_apc; - - - create view TARGET.foo1 as select * from SOURCE.result_result rr where rr.source in (select id from TARGET.result); create view TARGET.foo2 as select * from SOURCE.result_result rr where rr.target in (select id from TARGET.result); create table TARGET.result_result STORED AS PARQUET as select distinct * from (select * from TARGET.foo1 union all select * from TARGET.foo2) foufou; From 68bd58d6a46c3ffc1c4ddafcb5b25bf065edde31 Mon Sep 17 00:00:00 2001 From: Alessia Bardi Date: Fri, 10 Jun 2022 17:29:11 +0200 Subject: [PATCH 70/83] tests for ROHub --- .../dnetlib/dhp/oa/graph/raw/MappersTest.java | 14 +++ .../dnetlib/dhp/oa/graph/clean/synonyms.txt | 1 + .../eu/dnetlib/dhp/oa/graph/clean/terms.txt | 1 + .../eu/dnetlib/dhp/oa/graph/raw/rohub.xml | 103 ++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/rohub.xml diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java index bdb73abf5..7bc2c6e7c 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java @@ -835,6 +835,20 @@ class MappersTest { assertEquals("EUR", p.getProcessingchargecurrency().getValue()); } + @Test + void testROHub() throws IOException, DocumentException { + final String xml = IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("rohub.xml"))); + final List list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml); + System.out.println("***************"); + System.out.println(new ObjectMapper().writeValueAsString(list)); + System.out.println("***************"); +// final Dataset p = (Dataset) list.get(0); +// assertValidId(p.getId()); +// assertValidId(p.getCollectedfrom().get(0).getKey()); +// System.out.println(p.getTitle().get(0).getValue()); +// assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue())); + } + private void assertValidId(final String id) { // System.out.println(id); diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/synonyms.txt b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/synonyms.txt index 09bd58aeb..39ed0cef1 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/synonyms.txt +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/synonyms.txt @@ -497,6 +497,7 @@ dnet:publication_resource @=@ 0044 @=@ Graduate diploma dnet:publication_resource @=@ 0044 @=@ Undergraduate diploma dnet:publication_resource @=@ 0000 @=@ UNKNOWN dnet:publication_resource @=@ 0042 @=@ EGI Virtual Appliance +dnet:publication_resource @=@ 0048 @=@ RO-crate dnet:languages @=@ abk @=@ ab dnet:languages @=@ aar @=@ aa dnet:languages @=@ afr @=@ af diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/terms.txt b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/terms.txt index bb1e5fbf9..59311d5a7 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/terms.txt +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/clean/terms.txt @@ -164,6 +164,7 @@ dnet:publication_resource @=@ dnet:publication_resource @=@ 0030 @=@ Sound dnet:publication_resource @=@ dnet:publication_resource @=@ 0044 @=@ Thesis dnet:publication_resource @=@ dnet:publication_resource @=@ 0000 @=@ Unknown dnet:publication_resource @=@ dnet:publication_resource @=@ 0042 @=@ Virtual Appliance +dnet:publication_resource @=@ dnet:publication_resource @=@ 0048 @=@ Research Object ec:funding_typologies @=@ ec:funding_typologies @=@ ec:frameworkprogram @=@ frameworkprogram ec:funding_typologies @=@ ec:funding_typologies @=@ ec:program @=@ program ec:funding_typologies @=@ ec:funding_typologies @=@ ec:specificprogram @=@ specificprogram diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/rohub.xml b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/rohub.xml new file mode 100644 index 000000000..ca3ebe6c2 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/rohub.xml @@ -0,0 +1,103 @@ + + +

+ eosca5322f5f::4dd1aaf93ae136b65dc9ee4e6f76eac9 + 53aa90bf-c593-4e6d-923f-d4711ac4b0e1 + 2022-05-25T15:35:48.262Z + eosca5322f5f + 53aa90bf-c593-4e6d-923f-d4711ac4b0e1 + 2022-05-25T15:35:38Z + rohub_data + ro-crate_data + 2022-05-25T15:36:11.094Z +
+ + + https://w3id.org/ro-id/53aa90bf-c593-4e6d-923f-d4711ac4b0e1 + + http://api.rohub.org/api/ros/53aa90bf-c593-4e6d-923f-d4711ac4b0e1/ + + + + https://github.com/NordicESMhub/RELIANCE/blob/main/content/science/notebooks/air_quality_lockdown.ipynb + + https://github.com/NordicESMhub/RELIANCE/blob/main/content/science/notebooks/air_quality_lockdown.ipynb + + https://nordicesmhub.github.io/RELIANCE/science/notebooks/air_quality_lockdown.html + + https://nordicesmhub.github.io/RELIANCE/science/notebooks/air_quality_lockdown.html + + + + + Anne Fouilloux + + + + + 2021-12-19T21:18:33Z + + + The COVID-19 pandemic has led to significant reductions in economic activity, especially during lockdowns. Several studies has shown that the concentration of nitrogen dioxyde and particulate matter levels have reduced during lockdown events. Reductions in transportation sector emissions are most likely largely responsible for the NO2 anomalies. In this study, we analyze the impact of lockdown events on the air quality using data from Copernicus Atmosphere Monitoring Service over Europe and at selected locations. + + + + European Commission + 10.13039/501100000781 + 101017502 + Research Lifecycle Management for Earth Science Communities and Copernicus Users + + + MIT License + University of Oslo + 2021 + RO-crate + + open access + + + 11.971 MB + + + Applied sciences + Meteorology + EOSC::RO-crate + + + Impact of the Covid-19 Lockdown on Air quality over Europe + + + https://w3id.org/ro-id/53aa90bf-c593-4e6d-923f-d4711ac4b0e1 + 0048 + + OPEN + https://opensource.org/licenses/MIT + und + + + + + + + https%3A%2F%2Fapi.rohub.org%2Fapi%2Foai2d%2F + 53aa90bf-c593-4e6d-923f-d4711ac4b0e1 + 2022-05-25T15:35:38Z + + + + + false + false + 0.9 + + + + + \ No newline at end of file From 634869ce95611156d6e8e5b2412241b535c339ae Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 16 May 2022 09:39:54 +0200 Subject: [PATCH 71/83] deleted hierarchical rels from ror action set --- .../ror/GenerateRorActionSetJob.java | 62 ++++--------------- 1 file changed, 11 insertions(+), 51 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java index e4d458780..6c76f8a4d 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java @@ -3,7 +3,6 @@ package eu.dnetlib.dhp.actionmanager.ror; import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; import static eu.dnetlib.dhp.schema.common.ModelConstants.ENTITYREGISTRY_PROVENANCE_ACTION; -import static eu.dnetlib.dhp.schema.common.ModelConstants.ORG_ORG_RELTYPE; import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.dataInfo; import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.field; import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.listKeyValues; @@ -39,7 +38,6 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.actionmanager.ror.model.ExternalIdType; -import eu.dnetlib.dhp.actionmanager.ror.model.Relationship; import eu.dnetlib.dhp.actionmanager.ror.model.RorOrganization; import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.common.HdfsSupport; @@ -51,7 +49,6 @@ import eu.dnetlib.dhp.schema.oaf.KeyValue; import eu.dnetlib.dhp.schema.oaf.Oaf; import eu.dnetlib.dhp.schema.oaf.Organization; import eu.dnetlib.dhp.schema.oaf.Qualifier; -import eu.dnetlib.dhp.schema.oaf.Relation; import eu.dnetlib.dhp.schema.oaf.StructuredProperty; import eu.dnetlib.dhp.utils.DHPUtils; import scala.Tuple2; @@ -64,21 +61,17 @@ public class GenerateRorActionSetJob { private static final String ROR_NS_PREFIX = "ror_________"; - private static final List ROR_COLLECTED_FROM = listKeyValues( - "10|openaire____::993a7ae7a863813cf95028b50708e222", "ROR"); + private static final List ROR_COLLECTED_FROM = listKeyValues("10|openaire____::993a7ae7a863813cf95028b50708e222", "ROR"); - private static final DataInfo ROR_DATA_INFO = dataInfo( - false, "", false, false, ENTITYREGISTRY_PROVENANCE_ACTION, "0.92"); + private static final DataInfo ROR_DATA_INFO = dataInfo(false, "", false, false, ENTITYREGISTRY_PROVENANCE_ACTION, "0.92"); - private static final Qualifier ROR_PID_TYPE = qualifier( - "ROR", "ROR", ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); + private static final Qualifier ROR_PID_TYPE = qualifier("ROR", "ROR", ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); public static void main(final String[] args) throws Exception { final String jsonConfiguration = IOUtils - .toString( - GenerateRorActionSetJob.class - .getResourceAsStream("/eu/dnetlib/dhp/actionmanager/ror/action_set_parameters.json")); + .toString(GenerateRorActionSetJob.class + .getResourceAsStream("/eu/dnetlib/dhp/actionmanager/ror/action_set_parameters.json")); final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); @@ -116,9 +109,8 @@ public class GenerateRorActionSetJob { readInputPath(spark, inputPath) .map(GenerateRorActionSetJob::convertRorOrg) .flatMap(List::iterator) - .mapToPair( - aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), - new Text(OBJECT_MAPPER.writeValueAsString(aa)))) + .mapToPair(aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), + new Text(OBJECT_MAPPER.writeValueAsString(aa)))) .saveAsHadoopFile(outputPath, Text.class, Text.class, SequenceFileOutputFormat.class); } @@ -153,12 +145,9 @@ public class GenerateRorActionSetJob { o.setEcnutscode(null); if (r.getCountry() != null) { o - .setCountry( - qualifier( - r.getCountry().getCountryCode(), r - .getCountry() - .getCountryName(), - ModelConstants.DNET_COUNTRY_TYPE, ModelConstants.DNET_COUNTRY_TYPE)); + .setCountry(qualifier(r.getCountry().getCountryCode(), r + .getCountry() + .getCountryName(), ModelConstants.DNET_COUNTRY_TYPE, ModelConstants.DNET_COUNTRY_TYPE)); } else { o.setCountry(null); } @@ -168,38 +157,10 @@ public class GenerateRorActionSetJob { final List> res = new ArrayList<>(); res.add(new AtomicAction<>(Organization.class, o)); - for (final Relationship rorRel : r.getRelationships()) { - if (rorRel.getType().equalsIgnoreCase("parent")) { - final String orgId1 = calculateOpenaireId(r.getId()); - final String orgId2 = calculateOpenaireId(rorRel.getId()); - res - .add( - new AtomicAction<>(Relation.class, - calculateHierarchyRel(orgId1, orgId2, ModelConstants.IS_PARENT_OF))); - res - .add( - new AtomicAction<>(Relation.class, - calculateHierarchyRel(orgId2, orgId1, ModelConstants.IS_CHILD_OF))); - } - } - return res; } - private static Relation calculateHierarchyRel(final String source, final String target, final String relClass) { - final Relation rel = new Relation(); - rel.setSource(source); - rel.setTarget(target); - rel.setRelType(ORG_ORG_RELTYPE); - rel.setSubRelType(ModelConstants.RELATIONSHIP); - rel.setRelClass(relClass); - rel.setCollectedfrom(ROR_COLLECTED_FROM); - rel.setDataInfo(ROR_DATA_INFO); - rel.setLastupdatetimestamp(System.currentTimeMillis()); - return rel; - } - private static String calculateOpenaireId(final String rorId) { return String.format("20|%s::%s", ROR_NS_PREFIX, DHPUtils.md5(rorId)); } @@ -212,8 +173,7 @@ public class GenerateRorActionSetJob { final String type = e.getKey(); final List all = e.getValue().getAll(); if (all != null) { - final Qualifier qualifier = qualifier( - type, type, ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); + final Qualifier qualifier = qualifier(type, type, ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); for (final String pid : all) { pids .add(structuredProperty(pid, qualifier, ROR_DATA_INFO)); From b8cda654872507e4ad622e05705c6d950186c355 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 13 Jun 2022 09:20:03 +0200 Subject: [PATCH 72/83] code formatting --- .../ror/GenerateRorActionSetJob.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java index 6c76f8a4d..6b5bed5b8 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/ror/GenerateRorActionSetJob.java @@ -61,17 +61,21 @@ public class GenerateRorActionSetJob { private static final String ROR_NS_PREFIX = "ror_________"; - private static final List ROR_COLLECTED_FROM = listKeyValues("10|openaire____::993a7ae7a863813cf95028b50708e222", "ROR"); + private static final List ROR_COLLECTED_FROM = listKeyValues( + "10|openaire____::993a7ae7a863813cf95028b50708e222", "ROR"); - private static final DataInfo ROR_DATA_INFO = dataInfo(false, "", false, false, ENTITYREGISTRY_PROVENANCE_ACTION, "0.92"); + private static final DataInfo ROR_DATA_INFO = dataInfo( + false, "", false, false, ENTITYREGISTRY_PROVENANCE_ACTION, "0.92"); - private static final Qualifier ROR_PID_TYPE = qualifier("ROR", "ROR", ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); + private static final Qualifier ROR_PID_TYPE = qualifier( + "ROR", "ROR", ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); public static void main(final String[] args) throws Exception { final String jsonConfiguration = IOUtils - .toString(GenerateRorActionSetJob.class - .getResourceAsStream("/eu/dnetlib/dhp/actionmanager/ror/action_set_parameters.json")); + .toString( + GenerateRorActionSetJob.class + .getResourceAsStream("/eu/dnetlib/dhp/actionmanager/ror/action_set_parameters.json")); final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); @@ -109,8 +113,9 @@ public class GenerateRorActionSetJob { readInputPath(spark, inputPath) .map(GenerateRorActionSetJob::convertRorOrg) .flatMap(List::iterator) - .mapToPair(aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), - new Text(OBJECT_MAPPER.writeValueAsString(aa)))) + .mapToPair( + aa -> new Tuple2<>(new Text(aa.getClazz().getCanonicalName()), + new Text(OBJECT_MAPPER.writeValueAsString(aa)))) .saveAsHadoopFile(outputPath, Text.class, Text.class, SequenceFileOutputFormat.class); } @@ -145,9 +150,12 @@ public class GenerateRorActionSetJob { o.setEcnutscode(null); if (r.getCountry() != null) { o - .setCountry(qualifier(r.getCountry().getCountryCode(), r - .getCountry() - .getCountryName(), ModelConstants.DNET_COUNTRY_TYPE, ModelConstants.DNET_COUNTRY_TYPE)); + .setCountry( + qualifier( + r.getCountry().getCountryCode(), r + .getCountry() + .getCountryName(), + ModelConstants.DNET_COUNTRY_TYPE, ModelConstants.DNET_COUNTRY_TYPE)); } else { o.setCountry(null); } @@ -173,7 +181,8 @@ public class GenerateRorActionSetJob { final String type = e.getKey(); final List all = e.getValue().getAll(); if (all != null) { - final Qualifier qualifier = qualifier(type, type, ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); + final Qualifier qualifier = qualifier( + type, type, ModelConstants.DNET_PID_TYPES, ModelConstants.DNET_PID_TYPES); for (final String pid : all) { pids .add(structuredProperty(pid, qualifier, ROR_DATA_INFO)); From 116902c028c5c498be74b5bbe55b78f50c99fb78 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 13 Jun 2022 14:31:48 +0200 Subject: [PATCH 73/83] mapping relationship from trasformed records based on oaf:relation --- .../raw/AbstractMdRecordToOafMapper.java | 65 ++++++++++++--- .../dnetlib/dhp/oa/graph/raw/MappersTest.java | 82 +++++++++++++------ .../dnetlib/dhp/oa/graph/raw/oaf_record.xml | 7 ++ 3 files changed, 117 insertions(+), 37 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java index 3e8ca1763..bf337e6c9 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java @@ -18,14 +18,7 @@ import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.oaiIProvenance; import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.qualifier; import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.structuredProperty; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; +import java.util.*; import org.apache.commons.lang3.StringUtils; import org.dom4j.*; @@ -35,6 +28,7 @@ import com.google.common.collect.Sets; import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.common.ModelSupport; import eu.dnetlib.dhp.schema.oaf.AccessRight; import eu.dnetlib.dhp.schema.oaf.Author; import eu.dnetlib.dhp.schema.oaf.Context; @@ -199,8 +193,13 @@ public abstract class AbstractMdRecordToOafMapper { final List oafs = Lists.newArrayList(entity); if (!oafs.isEmpty()) { - oafs.addAll(addProjectRels(doc, entity)); - oafs.addAll(addOtherResultRels(doc, entity)); + Set rels = Sets.newHashSet(); + + rels.addAll(addProjectRels(doc, entity)); + rels.addAll(addOtherResultRels(doc, entity)); + rels.addAll(addRelations(doc, entity)); + + oafs.addAll(rels); } return oafs; @@ -278,6 +277,52 @@ public abstract class AbstractMdRecordToOafMapper { return res; } + private List addRelations(Document doc, OafEntity entity) { + + final List rels = Lists.newArrayList(); + + for (Object o : doc.selectNodes("//oaf:relation")) { + Element element = (Element) o; + + final Relation rel = new Relation(); + rel.setCollectedfrom(entity.getCollectedfrom()); + rel.setDataInfo(entity.getDataInfo()); + rel.setLastupdatetimestamp(entity.getLastupdatetimestamp()); + + String relType = element.attributeValue("relType"); + String subRelType = element.attributeValue("subRelType"); + String relClass = element.attributeValue("relClass"); + String relClassInverse = ModelSupport + .findInverse(ModelSupport.rel(relType, subRelType, relClass)) + .getInverseRelClass(); + + rel.setSource(entity.getId()); + String target = StringUtils.trim(element.getText()); + + final String validationdDate = ((Node) o).valueOf("@validationDate"); + + if (StringUtils.isNotBlank(target)) { + + // TODO discover the target entity type with a dedicated attribute, e.g. @targetType. + final String[] parts = relType.split("(?=\\p{Upper})"); + final String targetType = parts[1].toLowerCase(); + final String targetId = createOpenaireId(targetType, target, true); + + rels + .add( + getRelation( + entity.getId(), targetId, relType, subRelType, relClass, entity, validationdDate)); + rels + .add( + getRelation( + targetId, entity.getId(), relType, subRelType, relClassInverse, entity, validationdDate)); + } + + } + + return rels; + } + protected Relation getRelation(final String source, final String target, final String relType, diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java index 7bc2c6e7c..dd69bae85 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java @@ -57,14 +57,10 @@ class MappersTest { final List list = new OafToOafMapper(vocs, false, true).processMdRecord(xml); - assertEquals(3, list.size()); - assertTrue(list.get(0) instanceof Publication); - assertTrue(list.get(1) instanceof Relation); - assertTrue(list.get(2) instanceof Relation); + assertEquals(1, list.stream().filter(o -> o instanceof Publication).count()); + assertEquals(4, list.stream().filter(o -> o instanceof Relation).count()); - final Publication p = (Publication) list.get(0); - final Relation r1 = (Relation) list.get(1); - final Relation r2 = (Relation) list.get(2); + Publication p = (Publication) list.stream().filter(o -> o instanceof Publication).findFirst().get(); assertValidId(p.getId()); @@ -125,26 +121,58 @@ class MappersTest { assertNotNull(p.getBestaccessright()); assertEquals("OPEN", p.getBestaccessright().getClassid()); - assertValidId(r1.getSource()); - assertValidId(r1.getTarget()); - assertValidId(r2.getSource()); - assertValidId(r2.getTarget()); - assertValidId(r1.getCollectedfrom().get(0).getKey()); - assertValidId(r2.getCollectedfrom().get(0).getKey()); - assertNotNull(r1.getDataInfo()); - assertNotNull(r2.getDataInfo()); - assertNotNull(r1.getDataInfo().getTrust()); - assertNotNull(r2.getDataInfo().getTrust()); - assertEquals(r1.getSource(), r2.getTarget()); - assertEquals(r2.getSource(), r1.getTarget()); - assertTrue(StringUtils.isNotBlank(r1.getRelClass())); - assertTrue(StringUtils.isNotBlank(r2.getRelClass())); - assertTrue(StringUtils.isNotBlank(r1.getRelType())); - assertTrue(StringUtils.isNotBlank(r2.getRelType())); - assertTrue(r1.getValidated()); - assertTrue(r2.getValidated()); - assertEquals("2020-01-01", r1.getValidationDate()); - assertEquals("2020-01-01", r2.getValidationDate()); + + // RESULT PROJECT + List resultProject = list + .stream() + .filter(o -> o instanceof Relation) + .map(o -> (Relation) o) + .filter(r -> ModelConstants.RESULT_PROJECT.equals(r.getRelType())) + .collect(Collectors.toList()); + + assertEquals(2, resultProject.size()); + final Relation rp1 = resultProject.get(0); + final Relation rp2 = resultProject.get(1); + + verifyRelation(rp1); + verifyRelation(rp2); + + assertTrue(rp1.getValidated()); + assertTrue(rp2.getValidated()); + assertEquals("2020-01-01", rp1.getValidationDate()); + assertEquals("2020-01-01", rp2.getValidationDate()); + + assertEquals(rp1.getSource(), rp2.getTarget()); + assertEquals(rp2.getSource(), rp1.getTarget()); + + // AFFILIATIONS + List affiliation = list + .stream() + .filter(o -> o instanceof Relation) + .map(o -> (Relation) o) + .filter(r -> ModelConstants.RESULT_ORGANIZATION.equals(r.getRelType())) + .collect(Collectors.toList()); + + assertEquals(2, affiliation.size()); + final Relation aff1 = affiliation.get(0); + final Relation aff2 = affiliation.get(1); + + verifyRelation(aff1); + verifyRelation(aff2); + + assertEquals(aff1.getSource(), aff2.getTarget()); + assertEquals(aff2.getSource(), aff1.getTarget()); + } + + private void verifyRelation(Relation r) { + assertValidId(r.getSource()); + assertValidId(r.getTarget()); + assertValidId(r.getCollectedfrom().get(0).getKey()); + assertNotNull(r.getDataInfo()); + assertNotNull(r.getDataInfo().getTrust()); + assertTrue(StringUtils.isNotBlank(r.getRelClass())); + assertTrue(StringUtils.isNotBlank(r.getRelType())); + } @Test diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml index f4b0c477f..2946ba0b5 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml @@ -60,6 +60,13 @@ https://oneecosystem.pensoft.net/article/13718/ One Ecosystem 0001 + ror_________::https://ror.org/02gdcn153 + corda_______::226852 From 88d531dc91294236fca929f13b1bf5ab00ef4c72 Mon Sep 17 00:00:00 2001 From: Alessia Bardi Date: Mon, 13 Jun 2022 16:17:17 +0200 Subject: [PATCH 74/83] exclude FAIRsharing records from Datacite --- .../datacite/DataciteToOAFTransformation.scala | 18 ++++++++++++------ .../datacite/record_fairsharing.json | 1 + .../dhp/datacite/DataciteToOAFTest.scala | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/datacite/record_fairsharing.json diff --git a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTransformation.scala b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTransformation.scala index 48d0f1497..ff966aaea 100644 --- a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTransformation.scala +++ b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTransformation.scala @@ -47,13 +47,18 @@ object DataciteToOAFTransformation { } /** This method should skip record if json contains invalid text - * defined in gile datacite_filter + * defined in file datacite_filter * - * @param json + * @param record : unparsed datacite record + * @param json : parsed record * @return True if the record should be skipped */ - def skip_record(json: String): Boolean = { - datacite_filter.exists(f => json.contains(f)) + def skip_record(record: String, json: org.json4s.JValue): Boolean = { + implicit lazy val formats: DefaultFormats.type = org.json4s.DefaultFormats + datacite_filter.exists(f => record.contains(f)) || (json \\ "publisher") + .extractOrElse[String]("") + .equalsIgnoreCase("FAIRsharing") + } @deprecated("this method will be removed", "dhp") @@ -304,12 +309,13 @@ object DataciteToOAFTransformation { vocabularies: VocabularyGroup, exportLinks: Boolean ): List[Oaf] = { - if (skip_record(input)) - return List() implicit lazy val formats: DefaultFormats.type = org.json4s.DefaultFormats lazy val json = parse(input) + if (skip_record(input, json)) + return List() + val resourceType = (json \ "attributes" \ "types" \ "resourceType").extractOrElse[String](null) val resourceTypeGeneral = (json \ "attributes" \ "types" \ "resourceTypeGeneral").extractOrElse[String](null) diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/datacite/record_fairsharing.json b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/datacite/record_fairsharing.json new file mode 100644 index 000000000..08e80b33b --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/datacite/record_fairsharing.json @@ -0,0 +1 @@ +{"id":"10.5517/ccdc.csd.cc25rpzm","type":"dois","attributes":{"doi":"10.5517/ccdc.csd.cc25rpzm","prefix":"10.5517","suffix":"ccdc.csd.cc25rpzm","identifiers":[{"identifier":"2018781","identifierType":"CCDC"}],"alternateIdentifiers":[{"alternateIdentifierType":"CCDC","alternateIdentifier":"2018781"}],"creators":[{"name":"Ling, Irene","affiliation":[],"nameIdentifiers":[]},{"name":"Sobolev, Alexandre N.","affiliation":[],"nameIdentifiers":[]},{"name":"Raston, Colin L.","affiliation":[],"nameIdentifiers":[]}],"titles":[{"title":"CCDC 2018781: Experimental Crystal Structure Determination"}],"publisher":"fairsharing","container":{},"publicationYear":2021,"subjects":[{"subject":"Crystal Structure"},{"subject":"Experimental 3D Coordinates"},{"subject":"Crystal System"},{"subject":"Space Group"},{"subject":"Cell Parameters"},{"subject":"Crystallography"},{"subject":"bis[penta-aqua-copper(ii)] bis(mu-5,11,17,23-tetra-sulfonato-25,26,27,28-tetrahydroxycalix(4)arene)-dodeca-aqua-tri-copper(ii) bis(nitrate) heptahydrate"}],"contributors":[],"dates":[],"language":"en","types":{"ris":"DATA","bibtex":"misc","citeproc":"dataset","schemaOrg":"Dataset","resourceTypeGeneral":"Dataset"},"relatedIdentifiers":[{"relationType":"IsSupplementTo","relatedIdentifier":"10.1080/00958972.2020.1849642","relatedIdentifierType":"DOI"}],"sizes":[],"formats":["CIF"],"version":null,"rightsList":[],"descriptions":[{"description":"Related Article: Irene Ling, Alexandre N. Sobolev, Colin L. Raston|2021|J.Coord.Chem.|74|40|doi:10.1080/00958972.2020.1849642","descriptionType":"Other"}],"geoLocations":[],"fundingReferences":[],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTUxNy9DQ0RDLkNTRC5DQzI1UlBaTTwvaWRlbnRpZmllcj4KICA8Y3JlYXRvcnM+CiAgICA8Y3JlYXRvcj4KICAgICAgPGNyZWF0b3JOYW1lPkxpbmcsIElyZW5lPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+U29ib2xldiwgQWxleGFuZHJlIE4uPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWU+UmFzdG9uLCBDb2xpbiBMLjwvY3JlYXRvck5hbWU+CiAgICA8L2NyZWF0b3I+CiAgPC9jcmVhdG9ycz4KICA8dGl0bGVzPgogICAgPHRpdGxlPkNDREMgMjAxODc4MTogRXhwZXJpbWVudGFsIENyeXN0YWwgU3RydWN0dXJlIERldGVybWluYXRpb248L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXI+Q2FtYnJpZGdlIENyeXN0YWxsb2dyYXBoaWMgRGF0YSBDZW50cmU8L3B1Ymxpc2hlcj4KICA8cHVibGljYXRpb25ZZWFyPjIwMjE8L3B1YmxpY2F0aW9uWWVhcj4KICA8cmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUdlbmVyYWw9IkRhdGFzZXQiLz4KICA8c3ViamVjdHM+CiAgICA8c3ViamVjdD5DcnlzdGFsIFN0cnVjdHVyZTwvc3ViamVjdD4KICAgIDxzdWJqZWN0PkV4cGVyaW1lbnRhbCAzRCBDb29yZGluYXRlczwvc3ViamVjdD4KICAgIDxzdWJqZWN0PkNyeXN0YWwgU3lzdGVtPC9zdWJqZWN0PgogICAgPHN1YmplY3Q+U3BhY2UgR3JvdXA8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5DZWxsIFBhcmFtZXRlcnM8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5DcnlzdGFsbG9ncmFwaHk8L3N1YmplY3Q+CiAgICA8c3ViamVjdD5iaXNbcGVudGEtYXF1YS1jb3BwZXIoaWkpXSBiaXMobXUtNSwxMSwxNywyMy10ZXRyYS1zdWxmb25hdG8tMjUsMjYsMjcsMjgtdGV0cmFoeWRyb3h5Y2FsaXgoNClhcmVuZSktZG9kZWNhLWFxdWEtdHJpLWNvcHBlcihpaSkgYmlzKG5pdHJhdGUpIGhlcHRhaHlkcmF0ZTwvc3ViamVjdD4KICA8L3N1YmplY3RzPgogIDxsYW5ndWFnZT5lbmc8L2xhbmd1YWdlPgogIDxhbHRlcm5hdGVJZGVudGlmaWVycz4KICAgIDxhbHRlcm5hdGVJZGVudGlmaWVyIGFsdGVybmF0ZUlkZW50aWZpZXJUeXBlPSJDQ0RDIj4yMDE4NzgxPC9hbHRlcm5hdGVJZGVudGlmaWVyPgogIDwvYWx0ZXJuYXRlSWRlbnRpZmllcnM+CiAgPHJlbGF0ZWRJZGVudGlmaWVycz4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSIgcmVsYXRpb25UeXBlPSJJc1N1cHBsZW1lbnRUbyI+MTAuMTA4MC8wMDk1ODk3Mi4yMDIwLjE4NDk2NDI8L3JlbGF0ZWRJZGVudGlmaWVyPgogIDwvcmVsYXRlZElkZW50aWZpZXJzPgogIDxzaXplcy8+CiAgPGZvcm1hdHM+CiAgICA8Zm9ybWF0PkNJRjwvZm9ybWF0PgogIDwvZm9ybWF0cz4KICA8dmVyc2lvbi8+CiAgPGRlc2NyaXB0aW9ucz4KICAgIDxkZXNjcmlwdGlvbiBkZXNjcmlwdGlvblR5cGU9Ik90aGVyIj5SZWxhdGVkIEFydGljbGU6IElyZW5lIExpbmcsICBBbGV4YW5kcmUgTi4gU29ib2xldiwgIENvbGluIEwuIFJhc3RvbnwyMDIxfEouQ29vcmQuQ2hlbS58NzR8NDB8ZG9pOjEwLjEwODAvMDA5NTg5NzIuMjAyMC4xODQ5NjQyPC9kZXNjcmlwdGlvbj4KICA8L2Rlc2NyaXB0aW9ucz4KPC9yZXNvdXJjZT4K","url":"http://www.ccdc.cam.ac.uk/services/structure_request?id=doi:10.5517/ccdc.csd.cc25rpzm&sid=DataCite","contentUrl":null,"metadataVersion":3,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"api","isActive":true,"state":"findable","reason":null,"viewCount":0,"viewsOverTime":[],"downloadCount":0,"downloadsOverTime":[],"referenceCount":0,"citationCount":0,"citationsOverTime":[],"partCount":0,"partOfCount":0,"versionCount":0,"versionOfCount":0,"created":"2021-03-09T13:25:35.000Z","registered":"2021-03-09T13:25:36.000Z","published":"2021","updated":"2021-03-31T21:49:56.000Z"},"relationships":{"client":{"data":{"id":"ccdc.csd","type":"clients"}},"provider":{"data":{"id":"ccdc","type":"providers"}},"media":{"data":{"id":"10.5517/ccdc.csd.cc25rpzm","type":"media"}},"references":{"data":[]},"citations":{"data":[]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[]},"versionOf":{"data":[]}}} \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTest.scala b/dhp-workflows/dhp-aggregation/src/test/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTest.scala index 8e41de83c..31784c7e9 100644 --- a/dhp-workflows/dhp-aggregation/src/test/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTest.scala +++ b/dhp-workflows/dhp-aggregation/src/test/scala/eu/dnetlib/dhp/datacite/DataciteToOAFTest.scala @@ -107,4 +107,19 @@ class DataciteToOAFTest extends AbstractVocabularyTest { } + @Test + def testFilter(): Unit = { + val record = Source + .fromInputStream( + getClass.getResourceAsStream("/eu/dnetlib/dhp/actionmanager/datacite/record_fairsharing.json") + ) + .mkString + + val mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT) + val res: List[Oaf] = DataciteToOAFTransformation.generateOAF(record, 0L, 0L, vocabularies, true) + + assertTrue(res.isEmpty) + + } + } From 4c8e820ff0af53cb2b86d6553281afb2839d1699 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 14 Jun 2022 08:49:02 +0200 Subject: [PATCH 75/83] mapping relationship from trasformed records based on oaf:relation --- .../raw/AbstractMdRecordToOafMapper.java | 56 +++++++++---------- .../dnetlib/dhp/oa/graph/raw/oaf_record.xml | 4 +- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java index bf337e6c9..739be3df4 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java @@ -284,42 +284,36 @@ public abstract class AbstractMdRecordToOafMapper { for (Object o : doc.selectNodes("//oaf:relation")) { Element element = (Element) o; - final Relation rel = new Relation(); - rel.setCollectedfrom(entity.getCollectedfrom()); - rel.setDataInfo(entity.getDataInfo()); - rel.setLastupdatetimestamp(entity.getLastupdatetimestamp()); + final String target = StringUtils.trim(element.getText()); + final String relType = element.attributeValue("relType"); + final String subRelType = element.attributeValue("subRelType"); + final String relClass = element.attributeValue("relClass"); - String relType = element.attributeValue("relType"); - String subRelType = element.attributeValue("subRelType"); - String relClass = element.attributeValue("relClass"); - String relClassInverse = ModelSupport - .findInverse(ModelSupport.rel(relType, subRelType, relClass)) - .getInverseRelClass(); + if (StringUtils.isNotBlank(target) && StringUtils.isNotBlank(relType) && StringUtils.isNotBlank(subRelType) + && StringUtils.isNotBlank(relClass)) { - rel.setSource(entity.getId()); - String target = StringUtils.trim(element.getText()); + final String relClassInverse = ModelSupport + .findInverse(ModelSupport.rel(relType, subRelType, relClass)) + .getInverseRelClass(); + final String validationdDate = ((Node) o).valueOf("@validationDate"); - final String validationdDate = ((Node) o).valueOf("@validationDate"); - - if (StringUtils.isNotBlank(target)) { - - // TODO discover the target entity type with a dedicated attribute, e.g. @targetType. - final String[] parts = relType.split("(?=\\p{Upper})"); - final String targetType = parts[1].toLowerCase(); - final String targetId = createOpenaireId(targetType, target, true); - - rels - .add( - getRelation( - entity.getId(), targetId, relType, subRelType, relClass, entity, validationdDate)); - rels - .add( - getRelation( - targetId, entity.getId(), relType, subRelType, relClassInverse, entity, validationdDate)); + if (StringUtils.isNotBlank(target)) { + final String targetType = element.attributeValue("targetType"); + if (StringUtils.isNotBlank(targetType)) { + final String targetId = createOpenaireId(targetType, target, true); + rels + .add( + getRelation( + entity.getId(), targetId, relType, subRelType, relClass, entity, validationdDate)); + rels + .add( + getRelation( + targetId, entity.getId(), relType, subRelType, relClassInverse, entity, + validationdDate)); + } + } } - } - return rels; } diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml index 2946ba0b5..277578185 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/oaf_record.xml @@ -62,10 +62,12 @@ 0001 ror_________::https://ror.org/02gdcn153 + subRelType="affiliation" + targetType="organization">ror_________::https://ror.org/02gdcn153 corda_______::226852 From b295a40d9cd88ad8c88c4a387eb10baa58502f64 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 16 Jun 2022 12:20:43 +0200 Subject: [PATCH 76/83] restored use of name_particles when parsing author names --- .../eu/dnetlib/dhp/common/PacePerson.java | 74 ++++++++++++------- .../eu/dnetlib/dhp/common}/name_particles.txt | 2 +- .../dnetlib/dhp/oa/graph/raw/MappersTest.java | 45 +++++++++++ .../dnetlib/dhp/oa/graph/raw/odf_zenodo.xml | 69 +++++++++++++++++ 4 files changed, 161 insertions(+), 29 deletions(-) rename {dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/pace => dhp-common/src/main/resources/eu/dnetlib/dhp/common}/name_particles.txt (85%) create mode 100644 dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/odf_zenodo.xml diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/common/PacePerson.java b/dhp-common/src/main/java/eu/dnetlib/dhp/common/PacePerson.java index 91c6c1825..fac9a7565 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/common/PacePerson.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/common/PacePerson.java @@ -1,18 +1,18 @@ package eu.dnetlib.dhp.common; +import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.Normalizer; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.text.WordUtils; +import com.ctc.wstx.dtd.LargePrefixedNameSet; import com.google.common.base.Joiner; import com.google.common.base.Splitter; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.hash.Hashing; @@ -29,7 +29,19 @@ public class PacePerson { private List fullname = Lists.newArrayList(); private final String original; - private static Set particles = null; + private static Set particles; + + static { + try { + particles = new HashSet<>(IOUtils + .readLines( + PacePerson.class + .getResourceAsStream( + "/eu/dnetlib/dhp/common/name_particles.txt"))); + } catch (IOException e) { + throw new RuntimeException(e); + } + } /** * Capitalizes a string @@ -37,29 +49,20 @@ public class PacePerson { * @param s the string to capitalize * @return the input string with capital letter */ - public static final String capitalize(final String s) { + public static String capitalize(final String s) { + if (particles.contains(s)) { + return s; + } return WordUtils.capitalize(s.toLowerCase(), ' ', '-'); } /** * Adds a dot to a string with length equals to 1 */ - public static final String dotAbbreviations(final String s) { + public static String dotAbbreviations(final String s) { return s.length() == 1 ? s + "." : s; } - public static Set loadFromClasspath(final String classpath) { - final Set h = new HashSet<>(); - try { - for (final String s : IOUtils.readLines(PacePerson.class.getResourceAsStream(classpath))) { - h.add(s); - } - } catch (final Throwable e) { - return new HashSet<>(); - } - return h; - } - /** * The constructor of the class. It fills the fields of the class basing on the input fullname. * @@ -128,10 +131,6 @@ public class PacePerson { } private List splitTerms(final String s) { - if (particles == null) { - particles = loadFromClasspath("/eu/dnetlib/dhp/oa/graph/pace/name_particles.txt"); - } - final List list = Lists.newArrayList(); for (final String part : Splitter.on(" ").omitEmptyStrings().split(s)) { if (!particles.contains(part.toLowerCase())) { @@ -187,17 +186,36 @@ public class PacePerson { } public List getCapitalFirstnames() { - return Lists - .newArrayList( - Iterables.transform(getNameWithAbbreviations(), PacePerson::capitalize)); + return Optional + .ofNullable(getNameWithAbbreviations()) + .map( + name -> name + .stream() + .map(PacePerson::capitalize) + .collect(Collectors.toList())) + .orElse(new ArrayList<>()); } public List getCapitalSurname() { - return Lists.newArrayList(Iterables.transform(surname, PacePerson::capitalize)); + return Optional + .ofNullable(getSurname()) + .map( + surname -> surname + .stream() + .map(PacePerson::capitalize) + .collect(Collectors.toList())) + .orElse(new ArrayList<>()); } public List getNameWithAbbreviations() { - return Lists.newArrayList(Iterables.transform(name, PacePerson::dotAbbreviations)); + return Optional + .ofNullable(getName()) + .map( + name -> name + .stream() + .map(PacePerson::dotAbbreviations) + .collect(Collectors.toList())) + .orElse(new ArrayList<>()); } public boolean isAccurate() { diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/pace/name_particles.txt b/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt similarity index 85% rename from dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/pace/name_particles.txt rename to dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt index dae37c9dc..d21610522 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/pace/name_particles.txt +++ b/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt @@ -4,4 +4,4 @@ de dell sig mr -mrs +mrs \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java index dd69bae85..f5cb86bfd 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java @@ -762,6 +762,51 @@ class MappersTest { assertFalse(p_cleaned.getTitle().isEmpty()); } + @Test + void testZenodo() throws IOException, DocumentException { + final String xml = IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("odf_zenodo.xml"))); + final List list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml); + + System.out.println("***************"); + System.out.println(new ObjectMapper().writeValueAsString(list)); + System.out.println("***************"); + + final Publication p = (Publication) list.get(0); + assertValidId(p.getId()); + assertValidId(p.getCollectedfrom().get(0).getKey()); + + assertNotNull(p.getTitle()); + assertFalse(p.getTitle().isEmpty()); + assertEquals(1, p.getTitle().size()); + assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue())); + + assertNotNull(p.getAuthor()); + assertEquals(2, p.getAuthor().size()); + + Author author = p + .getAuthor() + .stream() + .filter(a -> a.getPid().stream().anyMatch(pi -> pi.getValue().equals("0000-0003-3272-8007"))) + .findFirst() + .get(); + assertNotNull(author); + assertTrue(StringUtils.isBlank(author.getSurname())); + assertTrue(StringUtils.isBlank(author.getName())); + assertEquals("Anne van Weerden", author.getFullname()); + + author = p + .getAuthor() + .stream() + .filter(a -> a.getPid().stream().anyMatch(pi -> pi.getValue().equals("0000-0003-3272-8008"))) + .findFirst() + .get(); + assertNotNull(author); + assertFalse(StringUtils.isBlank(author.getSurname())); + assertFalse(StringUtils.isBlank(author.getName())); + assertFalse(StringUtils.isBlank(author.getFullname())); + + } + @Test void testOdfFromHdfs() throws IOException, DocumentException { final String xml = IOUtils diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/odf_zenodo.xml b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/odf_zenodo.xml new file mode 100644 index 000000000..0fc568e56 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/odf_zenodo.xml @@ -0,0 +1,69 @@ + +> +
+ oai:zenodo.org:3406824 + 2020-01-20T16:45:20Z + openaire + 2022-06-07T10:21:24.06Z + test________::92fe3efa47883b2f3401e6a4bd92e9d7 + 2020-05-21T05:26:15.93Z + 2020-08-01T11:06:26.977Z +
+ + + 10.5281/zenodo.3406824 + + http://dx.doi.org/10.5281/zenodo.3406824 + + + + Anne van Weerden + 0000-0003-3272-8007 + Utrecht University Library + + + Anne van, Weerden + 0000-0003-3272-8008 + Utrecht University Library + + + + Helen Bayly and Catherine Disney as influences in the life of Sir William Rowan Hamilton + + Zenodo + 2018 + + Sir William Rowan Hamilton, Lady Helena Maria Hamilton Bayly, Catherine Disney, Ireland, history, biography, nineteenth century + + + 2018-12-28 + + en + + + 10.5281/zenodo.3406823 + + + Creative Commons Attribution 4.0 International + Open Access + + +

In the 1880s Robert Graves published a biography about Sir William Rowan Hamilton (1805-1865), to which in a 1980 biography Thomas Hankins added further information. From these biographies a picture emerged of a man who was unhappily married because he had lost the love of his life, which raised the question how such an unhappy man could produce so much beautiful mathematics. In this article it is stated that a main cause for the unhappy picture is that Graves ignored the influence on one another of Hamilton and his wife Helen Bayly, and Hankins that of Hamilton and his first and lost love Catherine Disney. It is then shown that if these influences are taken into account a very different view on Hamilton;s private life arises, in which he was happily married to a wife who enabled him to work as he needed to.

+
+
+ 10.5281/zenodo.3406824 + 0001 + 2018-12-28 + OPEN + https://creativecommons.org/licenses/by/4.0/legalcode + eng + + +
+
\ No newline at end of file From 929b145130a99f60de6dde4ed740fbbf8c73983b Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 21 Jun 2022 23:07:06 +0200 Subject: [PATCH 77/83] code formatting --- .../dhp/collection/CollectorWorker.java | 4 +- .../file/AbstractSplittedRecordPlugin.java | 91 +++---- .../plugin/file/FileCollectorPlugin.java | 36 +-- .../plugin/file/FileGZipCollectorPlugin.java | 38 +-- .../collection/plugin/utils/XMLIterator.java | 243 +++++++++--------- .../plugin/file/FileCollectorPluginTest.java | 67 ++--- .../file/FileGZipCollectorPluginTest.java | 73 +++--- 7 files changed, 285 insertions(+), 267 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java index f6cba6fb8..9d9400068 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java @@ -7,8 +7,6 @@ import java.io.IOException; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; -import eu.dnetlib.dhp.collection.plugin.file.FileCollectorPlugin; -import eu.dnetlib.dhp.collection.plugin.file.FileGZipCollectorPlugin; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; @@ -21,6 +19,8 @@ import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.aggregation.common.ReporterCallback; import eu.dnetlib.dhp.aggregation.common.ReportingJob; import eu.dnetlib.dhp.collection.plugin.CollectorPlugin; +import eu.dnetlib.dhp.collection.plugin.file.FileCollectorPlugin; +import eu.dnetlib.dhp.collection.plugin.file.FileGZipCollectorPlugin; import eu.dnetlib.dhp.collection.plugin.mongodb.MDStoreCollectorPlugin; import eu.dnetlib.dhp.collection.plugin.mongodb.MongoDbDumpCollectorPlugin; import eu.dnetlib.dhp.collection.plugin.oai.OaiCollectorPlugin; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java index 97f61980a..f2fa3d2bb 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java @@ -1,3 +1,4 @@ + package eu.dnetlib.dhp.collection.plugin.file; import java.io.BufferedInputStream; @@ -9,69 +10,71 @@ import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import eu.dnetlib.dhp.collection.ApiDescriptor; import eu.dnetlib.dhp.collection.plugin.CollectorPlugin; import eu.dnetlib.dhp.collection.plugin.utils.XMLIterator; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; import eu.dnetlib.dhp.common.collection.CollectorException; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public abstract class AbstractSplittedRecordPlugin implements CollectorPlugin { - private static final Logger log = LoggerFactory.getLogger(AbstractSplittedRecordPlugin.class); + private static final Logger log = LoggerFactory.getLogger(AbstractSplittedRecordPlugin.class); - public static final String SPLIT_ON_ELEMENT = "splitOnElement"; + public static final String SPLIT_ON_ELEMENT = "splitOnElement"; - private final FileSystem fileSystem; + private final FileSystem fileSystem; - public AbstractSplittedRecordPlugin(FileSystem fileSystem) { - this.fileSystem = fileSystem; - } + public AbstractSplittedRecordPlugin(FileSystem fileSystem) { + this.fileSystem = fileSystem; + } - @Override - public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { + @Override + public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { - // get path to file - final Path filePath = Optional - .ofNullable(api.getBaseUrl()) - .map(Path::new) - .orElseThrow( () -> new CollectorException("missing baseUrl")); + // get path to file + final Path filePath = Optional + .ofNullable(api.getBaseUrl()) + .map(Path::new) + .orElseThrow(() -> new CollectorException("missing baseUrl")); - log.info("baseUrl: {}", filePath); + log.info("baseUrl: {}", filePath); - // check that path to file exists - try { - if (!fileSystem.exists(filePath)) { - throw new CollectorException("path does not exist: " + filePath); - } - } catch (IOException e) { - throw new CollectorException(e); - } + // check that path to file exists + try { + if (!fileSystem.exists(filePath)) { + throw new CollectorException("path does not exist: " + filePath); + } + } catch (IOException e) { + throw new CollectorException(e); + } - // get split element - final String splitOnElement = Optional - .ofNullable(api.getParams().get(SPLIT_ON_ELEMENT)) - .orElseThrow(() -> new CollectorException(String.format("missing parameter '%s', required by the AbstractSplittedRecordPlugin", SPLIT_ON_ELEMENT))); + // get split element + final String splitOnElement = Optional + .ofNullable(api.getParams().get(SPLIT_ON_ELEMENT)) + .orElseThrow( + () -> new CollectorException(String + .format("missing parameter '%s', required by the AbstractSplittedRecordPlugin", SPLIT_ON_ELEMENT))); - log.info("splitOnElement: {}", splitOnElement); + log.info("splitOnElement: {}", splitOnElement); - final BufferedInputStream bis = getBufferedInputStream(filePath); + final BufferedInputStream bis = getBufferedInputStream(filePath); - Iterator xmlIterator = new XMLIterator(splitOnElement, bis); + Iterator xmlIterator = new XMLIterator(splitOnElement, bis); - return StreamSupport.stream( - Spliterators.spliteratorUnknownSize(xmlIterator, Spliterator.ORDERED), - false - ); - } + return StreamSupport + .stream( + Spliterators.spliteratorUnknownSize(xmlIterator, Spliterator.ORDERED), + false); + } - abstract protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException; + abstract protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException; - public FileSystem getFileSystem() { - return fileSystem; - } -} \ No newline at end of file + public FileSystem getFileSystem() { + return fileSystem; + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java index d7a992038..f771def93 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java @@ -1,31 +1,33 @@ + package eu.dnetlib.dhp.collection.plugin.file; -import eu.dnetlib.dhp.common.collection.CollectorException; +import java.io.BufferedInputStream; + import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.BufferedInputStream; +import eu.dnetlib.dhp.common.collection.CollectorException; public class FileCollectorPlugin extends AbstractSplittedRecordPlugin { - private static final Logger log = LoggerFactory.getLogger(FileCollectorPlugin.class); + private static final Logger log = LoggerFactory.getLogger(FileCollectorPlugin.class); - public FileCollectorPlugin(FileSystem fileSystem) { - super(fileSystem); - } + public FileCollectorPlugin(FileSystem fileSystem) { + super(fileSystem); + } - @Override - protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { + @Override + protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { - log.info("filePath: {}", filePath); + log.info("filePath: {}", filePath); - try { - FileSystem fs = super.getFileSystem(); - return new BufferedInputStream(fs.open(filePath)); - } catch (Exception e) { - throw new CollectorException("Error reading file " + filePath, e); - } - } -} \ No newline at end of file + try { + FileSystem fs = super.getFileSystem(); + return new BufferedInputStream(fs.open(filePath)); + } catch (Exception e) { + throw new CollectorException("Error reading file " + filePath, e); + } + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java index b724cfefd..91a6e9f16 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java @@ -1,33 +1,35 @@ + package eu.dnetlib.dhp.collection.plugin.file; -import eu.dnetlib.dhp.common.collection.CollectorException; +import java.io.BufferedInputStream; +import java.util.zip.GZIPInputStream; + import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.BufferedInputStream; -import java.util.zip.GZIPInputStream; +import eu.dnetlib.dhp.common.collection.CollectorException; public class FileGZipCollectorPlugin extends AbstractSplittedRecordPlugin { - private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); - public FileGZipCollectorPlugin(FileSystem fileSystem) { - super(fileSystem); - } + public FileGZipCollectorPlugin(FileSystem fileSystem) { + super(fileSystem); + } - @Override - protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { + @Override + protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { - log.info("filePath: {}", filePath); + log.info("filePath: {}", filePath); - try { - FileSystem fs = super.getFileSystem(); - GZIPInputStream stream = new GZIPInputStream(fs.open(filePath)); - return new BufferedInputStream(stream); - } catch (Exception e) { - throw new CollectorException("Error reading file " + filePath, e); - } - } + try { + FileSystem fs = super.getFileSystem(); + GZIPInputStream stream = new GZIPInputStream(fs.open(filePath)); + return new BufferedInputStream(stream); + } catch (Exception e) { + throw new CollectorException("Error reading file " + filePath, e); + } + } } diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java index 853973ebb..e05fe263a 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java @@ -1,3 +1,4 @@ + package eu.dnetlib.dhp.collection.plugin.utils; import java.io.InputStream; @@ -23,148 +24,154 @@ import org.apache.commons.logging.LogFactory; public class XMLIterator implements Iterator { - private static final Log log = LogFactory.getLog(XMLIterator.class); + private static final Log log = LogFactory.getLog(XMLIterator.class); - private ThreadLocal inputFactory = new ThreadLocal() { + private ThreadLocal inputFactory = new ThreadLocal() { - @Override - protected XMLInputFactory initialValue() { - return XMLInputFactory.newInstance(); - } - }; + @Override + protected XMLInputFactory initialValue() { + return XMLInputFactory.newInstance(); + } + }; - private ThreadLocal outputFactory = new ThreadLocal() { + private ThreadLocal outputFactory = new ThreadLocal() { - @Override - protected XMLOutputFactory initialValue() { - return XMLOutputFactory.newInstance(); - } - }; + @Override + protected XMLOutputFactory initialValue() { + return XMLOutputFactory.newInstance(); + } + }; - private ThreadLocal eventFactory = new ThreadLocal() { + private ThreadLocal eventFactory = new ThreadLocal() { - @Override - protected XMLEventFactory initialValue() { - return XMLEventFactory.newInstance(); - } - }; + @Override + protected XMLEventFactory initialValue() { + return XMLEventFactory.newInstance(); + } + }; - public static final String UTF_8 = "UTF-8"; + public static final String UTF_8 = "UTF-8"; - final XMLEventReader parser; + final XMLEventReader parser; - private XMLEvent current = null; + private XMLEvent current = null; - private String element; + private String element; - private InputStream inputStream; + private InputStream inputStream; - public XMLIterator(final String element, final InputStream inputStream) { - super(); - this.element = element; - this.inputStream = inputStream; - this.parser = getParser(); - try { - this.current = findElement(parser); - } catch (XMLStreamException e) { - log.warn("cannot init parser position. No element found: " + element); - current = null; - } - } + public XMLIterator(final String element, final InputStream inputStream) { + super(); + this.element = element; + this.inputStream = inputStream; + this.parser = getParser(); + try { + this.current = findElement(parser); + } catch (XMLStreamException e) { + log.warn("cannot init parser position. No element found: " + element); + current = null; + } + } - @Override - public boolean hasNext() { - return current != null; - } + @Override + public boolean hasNext() { + return current != null; + } - @Override - public String next() { - String result = null; - try { - result = copy(parser); - current = findElement(parser); - return result; - } catch (XMLStreamException e) { - throw new RuntimeException(String.format("error copying xml, built so far: '%s'", result), e); - } - } + @Override + public String next() { + String result = null; + try { + result = copy(parser); + current = findElement(parser); + return result; + } catch (XMLStreamException e) { + throw new RuntimeException(String.format("error copying xml, built so far: '%s'", result), e); + } + } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } + @Override + public void remove() { + throw new UnsupportedOperationException(); + } - @SuppressWarnings("finally") - private String copy(final XMLEventReader parser) throws XMLStreamException { - final StringWriter result = new StringWriter(); - try { - final XMLEventWriter writer = outputFactory.get().createXMLEventWriter(result); - final StartElement start = current.asStartElement(); - final StartElement newRecord = eventFactory.get().createStartElement(start.getName(), start.getAttributes(), start.getNamespaces()); + @SuppressWarnings("finally") + private String copy(final XMLEventReader parser) throws XMLStreamException { + final StringWriter result = new StringWriter(); + try { + final XMLEventWriter writer = outputFactory.get().createXMLEventWriter(result); + final StartElement start = current.asStartElement(); + final StartElement newRecord = eventFactory + .get() + .createStartElement(start.getName(), start.getAttributes(), start.getNamespaces()); - // new root record - writer.add(newRecord); + // new root record + writer.add(newRecord); - // copy the rest as it is - while (parser.hasNext()) { - final XMLEvent event = parser.nextEvent(); + // copy the rest as it is + while (parser.hasNext()) { + final XMLEvent event = parser.nextEvent(); - // TODO: replace with depth tracking instead of close tag tracking. - if (event.isEndElement() && event.asEndElement().getName().getLocalPart().equals(element)) { - writer.add(event); - break; - } + // TODO: replace with depth tracking instead of close tag tracking. + if (event.isEndElement() && event.asEndElement().getName().getLocalPart().equals(element)) { + writer.add(event); + break; + } - writer.add(event); - } - writer.close(); - } finally { - return result.toString(); - } - } + writer.add(event); + } + writer.close(); + } finally { + return result.toString(); + } + } - /** - * Looks for the next occurrence of the splitter element. - * - * @param parser - * @return - * @throws XMLStreamException - */ - private XMLEvent findElement(final XMLEventReader parser) throws XMLStreamException { + /** + * Looks for the next occurrence of the splitter element. + * + * @param parser + * @return + * @throws XMLStreamException + */ + private XMLEvent findElement(final XMLEventReader parser) throws XMLStreamException { - /* - * if (current != null && element.equals(current.asStartElement().getName().getLocalPart())) { return current; } - */ + /* + * if (current != null && element.equals(current.asStartElement().getName().getLocalPart())) { return current; } + */ - XMLEvent peek = parser.peek(); - if (peek != null && peek.isStartElement()) { - String name = peek.asStartElement().getName().getLocalPart(); - if (element.equals(name)) { return peek; } - } + XMLEvent peek = parser.peek(); + if (peek != null && peek.isStartElement()) { + String name = peek.asStartElement().getName().getLocalPart(); + if (element.equals(name)) { + return peek; + } + } - while (parser.hasNext()) { - final XMLEvent event = parser.nextEvent(); - if (event != null && event.isStartElement()) { - String name = event.asStartElement().getName().getLocalPart(); - if (element.equals(name)) { return event; } - } - } - return null; - } + while (parser.hasNext()) { + final XMLEvent event = parser.nextEvent(); + if (event != null && event.isStartElement()) { + String name = event.asStartElement().getName().getLocalPart(); + if (element.equals(name)) { + return event; + } + } + } + return null; + } - private XMLEventReader getParser() { - try { - return inputFactory.get().createXMLEventReader(sanitize(inputStream)); - } catch (XMLStreamException e) { - throw new RuntimeException(e); - } - } + private XMLEventReader getParser() { + try { + return inputFactory.get().createXMLEventReader(sanitize(inputStream)); + } catch (XMLStreamException e) { + throw new RuntimeException(e); + } + } - private Reader sanitize(final InputStream in) { - final CharsetDecoder charsetDecoder = Charset.forName(UTF_8).newDecoder(); - charsetDecoder.onMalformedInput(CodingErrorAction.REPLACE); - charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE); - return new InputStreamReader(in, charsetDecoder); - } + private Reader sanitize(final InputStream in) { + final CharsetDecoder charsetDecoder = Charset.forName(UTF_8).newDecoder(); + charsetDecoder.onMalformedInput(CodingErrorAction.REPLACE); + charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE); + return new InputStreamReader(in, charsetDecoder); + } -} \ No newline at end of file +} diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java index ed0578059..6fd101634 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java @@ -1,9 +1,10 @@ + package eu.dnetlib.dhp.collection.plugin.file; -import eu.dnetlib.dhp.collection.ApiDescriptor; -import eu.dnetlib.dhp.common.aggregation.AggregatorReport; -import eu.dnetlib.dhp.common.collection.CollectorException; -import net.bytebuddy.asm.Advice; +import java.io.IOException; +import java.util.HashMap; +import java.util.stream.Stream; + import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocalFileSystem; @@ -13,48 +14,48 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.util.HashMap; -import java.util.stream.Stream; +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; +import net.bytebuddy.asm.Advice; public class FileCollectorPluginTest { - private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); - private final ApiDescriptor api = new ApiDescriptor(); + private final ApiDescriptor api = new ApiDescriptor(); - private FileCollectorPlugin plugin; + private FileCollectorPlugin plugin; - private static final String SPLIT_ON_ELEMENT = "repository"; + private static final String SPLIT_ON_ELEMENT = "repository"; - @BeforeEach - public void setUp() throws IOException { + @BeforeEach + public void setUp() throws IOException { - final String gzipFile = this - .getClass() - .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml") - .getFile(); + final String gzipFile = this + .getClass() + .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml") + .getFile(); - api.setBaseUrl(gzipFile); + api.setBaseUrl(gzipFile); - HashMap params = new HashMap<>(); - params.put("splitOnElement", SPLIT_ON_ELEMENT); + HashMap params = new HashMap<>(); + params.put("splitOnElement", SPLIT_ON_ELEMENT); - api.setParams(params); + api.setParams(params); - FileSystem fs = FileSystem.get(new Configuration()); - plugin = new FileCollectorPlugin(fs); - } + FileSystem fs = FileSystem.get(new Configuration()); + plugin = new FileCollectorPlugin(fs); + } - @Test - void test() throws CollectorException { + @Test + void test() throws CollectorException { - final Stream stream = plugin.collect(api, new AggregatorReport()); + final Stream stream = plugin.collect(api, new AggregatorReport()); - stream.limit(10).forEach(s -> { - Assertions.assertTrue(s.length() > 0); - log.info(s); - }); - } + stream.limit(10).forEach(s -> { + Assertions.assertTrue(s.length() > 0); + log.info(s); + }); + } } - diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java index 23f08e6ea..dc24d6f13 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java @@ -1,8 +1,13 @@ + package eu.dnetlib.dhp.collection.plugin.file; -import eu.dnetlib.dhp.collection.ApiDescriptor; -import eu.dnetlib.dhp.common.aggregation.AggregatorReport; -import eu.dnetlib.dhp.common.collection.CollectorException; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.HashMap; +import java.util.Objects; +import java.util.stream.Stream; + import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocalFileSystem; @@ -13,53 +18,51 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.HashMap; -import java.util.Objects; -import java.util.stream.Stream; - +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @ExtendWith(MockitoExtension.class) public class FileGZipCollectorPluginTest { - private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); - private final ApiDescriptor api = new ApiDescriptor(); + private final ApiDescriptor api = new ApiDescriptor(); - private FileGZipCollectorPlugin plugin; + private FileGZipCollectorPlugin plugin; - private static final String SPLIT_ON_ELEMENT = "repository"; + private static final String SPLIT_ON_ELEMENT = "repository"; - @BeforeEach - public void setUp() throws IOException { + @BeforeEach + public void setUp() throws IOException { - final String gzipFile = Objects.requireNonNull(this - .getClass() - .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz")) - .getFile(); + final String gzipFile = Objects + .requireNonNull( + this + .getClass() + .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz")) + .getFile(); - api.setBaseUrl(gzipFile); + api.setBaseUrl(gzipFile); - HashMap params = new HashMap<>(); - params.put("splitOnElement", SPLIT_ON_ELEMENT); + HashMap params = new HashMap<>(); + params.put("splitOnElement", SPLIT_ON_ELEMENT); - api.setParams(params); + api.setParams(params); - FileSystem fs = FileSystem.get(new Configuration()); - plugin = new FileGZipCollectorPlugin(fs); - } + FileSystem fs = FileSystem.get(new Configuration()); + plugin = new FileGZipCollectorPlugin(fs); + } - @Test - void test() throws CollectorException { + @Test + void test() throws CollectorException { - final Stream stream = plugin.collect(api, new AggregatorReport()); + final Stream stream = plugin.collect(api, new AggregatorReport()); - stream.limit(10).forEach(s -> { - Assertions.assertTrue(s.length() > 0); - log.info(s); - }); - } + stream.limit(10).forEach(s -> { + Assertions.assertTrue(s.length() > 0); + log.info(s); + }); + } } From 316b0fd73c9b71cbde067b1d0d4a62b64da2d76e Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 27 Jun 2022 09:36:51 +0200 Subject: [PATCH 78/83] added 'von' to the name particles file --- .../src/main/resources/eu/dnetlib/dhp/common/name_particles.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt b/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt index d21610522..07cf06a98 100644 --- a/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt +++ b/dhp-common/src/main/resources/eu/dnetlib/dhp/common/name_particles.txt @@ -1,4 +1,5 @@ van +von der de dell From 7da24c1dec2e942b85aa821f2140094fd8886dcf Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 28 Jun 2022 13:47:49 +0200 Subject: [PATCH 79/83] added more logging --- .../src/main/java/eu/dnetlib/dhp/utils/DHPUtils.java | 5 +++++ .../oa/graph/raw/MigrateHdfsMdstoresApplication.java | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/utils/DHPUtils.java b/dhp-common/src/main/java/eu/dnetlib/dhp/utils/DHPUtils.java index 5a59bc0df..e10d0c500 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/utils/DHPUtils.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/utils/DHPUtils.java @@ -75,9 +75,14 @@ public class DHPUtils { final HttpGet req = new HttpGet(url); + log.info("MDStoreManager request: {}", req); + try (final CloseableHttpClient client = HttpClients.createDefault()) { try (final CloseableHttpResponse response = client.execute(req)) { final String json = IOUtils.toString(response.getEntity().getContent()); + + log.info("MDStoreManager response: {}", json); + final MDStoreWithInfo[] mdstores = objectMapper.readValue(json, MDStoreWithInfo[].class); return Arrays .stream(mdstores) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateHdfsMdstoresApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateHdfsMdstoresApplication.java index 6c72e4dfc..ab6f54b92 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateHdfsMdstoresApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateHdfsMdstoresApplication.java @@ -65,11 +65,19 @@ public class MigrateHdfsMdstoresApplication extends AbstractMigrationApplication log.info("isSparkSessionManaged: {}", isSparkSessionManaged); final String mdstoreManagerUrl = parser.get("mdstoreManagerUrl"); + log.info("mdstoreManagerUrl: {}", mdstoreManagerUrl); + final String mdFormat = parser.get("mdFormat"); + log.info("mdFormat: {}", mdFormat); + final String mdLayout = parser.get("mdLayout"); + log.info("mdLayout: {}", mdLayout); + final String mdInterpretation = parser.get("mdInterpretation"); + log.info("mdInterpretation: {}", mdInterpretation); final String hdfsPath = parser.get("hdfsPath"); + log.info("hdfsPath: {}", hdfsPath); final Set paths = mdstorePaths(mdstoreManagerUrl, mdFormat, mdLayout, mdInterpretation); @@ -95,6 +103,8 @@ public class MigrateHdfsMdstoresApplication extends AbstractMigrationApplication .filter(p -> HdfsSupport.exists(p, sc.hadoopConfiguration())) .toArray(size -> new String[size]); + log.info("Processing existing paths {}", Arrays.asList(validPaths)); + if (validPaths.length > 0) { spark .read() From a88103bcf940b323d6950ebbc80dea04fd115f44 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 1 Jul 2022 09:06:59 +0200 Subject: [PATCH 80/83] [action manager] added more testing --- ...moteActionPayloadForGraphTableJobTest.java | 55 +++++++++++++++++++ .../publication_table/result.json | 3 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-actionmanager/src/test/java/eu/dnetlib/dhp/actionmanager/promote/PromoteActionPayloadForGraphTableJobTest.java b/dhp-workflows/dhp-actionmanager/src/test/java/eu/dnetlib/dhp/actionmanager/promote/PromoteActionPayloadForGraphTableJobTest.java index 99ce961aa..df9202ed8 100644 --- a/dhp-workflows/dhp-actionmanager/src/test/java/eu/dnetlib/dhp/actionmanager/promote/PromoteActionPayloadForGraphTableJobTest.java +++ b/dhp-workflows/dhp-actionmanager/src/test/java/eu/dnetlib/dhp/actionmanager/promote/PromoteActionPayloadForGraphTableJobTest.java @@ -172,6 +172,61 @@ public class PromoteActionPayloadForGraphTableJobTest { } } + @Test + void shouldPromoteActionPayload_custom() throws Exception { + + Class rowClazz = Publication.class; + Class actionPayloadClazz = Result.class; + MergeAndGet.Strategy strategy = MergeAndGet.Strategy.MERGE_FROM_AND_GET; + + // given + Path inputGraphTableDir = createGraphTable(inputGraphRootDir, rowClazz); + Path inputActionPayloadDir = createActionPayload(inputActionPayloadRootDir, rowClazz, actionPayloadClazz); + Path outputGraphTableDir = outputDir.resolve("graph").resolve(rowClazz.getSimpleName().toLowerCase()); + + // when + PromoteActionPayloadForGraphTableJob + .main( + new String[] { + "-isSparkSessionManaged", + Boolean.FALSE.toString(), + "-inputGraphTablePath", + inputGraphTableDir.toString(), + "-graphTableClassName", + rowClazz.getCanonicalName(), + "-inputActionPayloadPath", + inputActionPayloadDir.toString(), + "-actionPayloadClassName", + actionPayloadClazz.getCanonicalName(), + "-outputGraphTablePath", + outputGraphTableDir.toString(), + "-mergeAndGetStrategy", + strategy.name(), + "--shouldGroupById", + "true" + }); + + // then + assertTrue(Files.exists(outputGraphTableDir)); + + List actualOutputRows = readGraphTableFromJobOutput(outputGraphTableDir.toString(), rowClazz) + .collectAsList() + .stream() + .sorted(Comparator.comparingInt(Object::hashCode)) + .collect(Collectors.toList()); + + Publication p = actualOutputRows + .stream() + .map(o -> (Publication) o) + .filter(o -> "50|4ScienceCRIS::6a67ed3daba1c380bf9de3c13ed9c879".equals(o.getId())) + .findFirst() + .get(); + + assertNotNull(p.getMeasures()); + assertTrue(p.getMeasures().size() > 0); + + } + public static Stream promoteJobTestParams() { return Stream .of( diff --git a/dhp-workflows/dhp-actionmanager/src/test/resources/eu/dnetlib/dhp/actionmanager/promote/input/action_payload/publication_table/result.json b/dhp-workflows/dhp-actionmanager/src/test/resources/eu/dnetlib/dhp/actionmanager/promote/input/action_payload/publication_table/result.json index f98ee4b78..d98bfe98f 100644 --- a/dhp-workflows/dhp-actionmanager/src/test/resources/eu/dnetlib/dhp/actionmanager/promote/input/action_payload/publication_table/result.json +++ b/dhp-workflows/dhp-actionmanager/src/test/resources/eu/dnetlib/dhp/actionmanager/promote/input/action_payload/publication_table/result.json @@ -17,4 +17,5 @@ {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}},"lastupdatetimestamp":1572018243405,"id":"50|CSC_________::00019460865d6cc381b36076131a5bc1","originalId":[],"collectedfrom":[],"pid":[],"dateofcollection":"","dateoftransformation":"","extraInfo":[],"oaiprovenance":null,"author":[],"resulttype":{"classid":"","classname":"","schemeid":"","schemename":""},"language":{"classid":"","classname":"","schemeid":"","schemename":""},"country":[],"subject":[{"value":"Computer Science::Networking and Internet Architecture","qualifier":{"classid":"arxiv","classname":"arxiv","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"0.7416","inferenceprovenance":"iis::document_classes","provenanceaction":{"classid":"iis","classname":"iis","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[],"relevantdate":[],"description":[],"dateofacceptance":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"publisher":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"embargoenddate":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":{"classid":"","classname":"","schemeid":"","schemename":""},"coverage":[],"bestaccessright":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":null,"instance":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}},"lastupdatetimestamp":1572018243405,"id":"50|CSC_________::00019460865d6cc381b36076131a5bc1","originalId":[],"collectedfrom":[],"pid":[],"dateofcollection":"","dateoftransformation":"","extraInfo":[],"oaiprovenance":null,"author":[],"resulttype":{"classid":"","classname":"","schemeid":"","schemename":""},"language":{"classid":"","classname":"","schemeid":"","schemename":""},"country":[],"subject":[{"value":"Computer Science::Networking and Internet Architecture","qualifier":{"classid":"arxiv","classname":"arxiv","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"0.7416","inferenceprovenance":"iis::document_classes","provenanceaction":{"classid":"iis","classname":"iis","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[],"relevantdate":[],"description":[],"dateofacceptance":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"publisher":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"embargoenddate":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":{"classid":"","classname":"","schemeid":"","schemename":""},"coverage":[],"bestaccessright":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":null,"instance":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}},"lastupdatetimestamp":1572018240982,"id":"50|CSC_________::0001d663c95c4132355e1765375a5275","originalId":[],"collectedfrom":[],"pid":[],"dateofcollection":"","dateoftransformation":"","extraInfo":[],"oaiprovenance":null,"author":[],"resulttype":{"classid":"","classname":"","schemeid":"","schemename":""},"language":{"classid":"","classname":"","schemeid":"","schemename":""},"country":[],"subject":[{"value":"animal diseases","qualifier":{"classid":"mesheuropmc","classname":"mesheuropmc","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"0.7461","inferenceprovenance":"iis::document_classes","provenanceaction":{"classid":"iis","classname":"iis","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[],"relevantdate":[],"description":[],"dateofacceptance":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"publisher":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"embargoenddate":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":{"classid":"","classname":"","schemeid":"","schemename":""},"coverage":[],"bestaccessright":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":null,"instance":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}},"lastupdatetimestamp":1572018240982,"id":"50|CSC_________::0001d663c95c4132355e1765375a5275","originalId":[],"collectedfrom":[],"pid":[],"dateofcollection":"","dateoftransformation":"","extraInfo":[],"oaiprovenance":null,"author":[],"resulttype":{"classid":"","classname":"","schemeid":"","schemename":""},"language":{"classid":"","classname":"","schemeid":"","schemename":""},"country":[],"subject":[{"value":"animal diseases","qualifier":{"classid":"mesheuropmc","classname":"mesheuropmc","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"0.7461","inferenceprovenance":"iis::document_classes","provenanceaction":{"classid":"iis","classname":"iis","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[],"relevantdate":[],"description":[],"dateofacceptance":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"publisher":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"embargoenddate":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":{"classid":"","classname":"","schemeid":"","schemename":""},"coverage":[],"bestaccessright":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":null,"instance":[]} \ No newline at end of file +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}},"lastupdatetimestamp":1572018240982,"id":"50|CSC_________::0001d663c95c4132355e1765375a5275","originalId":[],"collectedfrom":[],"pid":[],"dateofcollection":"","dateoftransformation":"","extraInfo":[],"oaiprovenance":null,"author":[],"resulttype":{"classid":"","classname":"","schemeid":"","schemename":""},"language":{"classid":"","classname":"","schemeid":"","schemename":""},"country":[],"subject":[{"value":"animal diseases","qualifier":{"classid":"mesheuropmc","classname":"mesheuropmc","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"0.7461","inferenceprovenance":"iis::document_classes","provenanceaction":{"classid":"iis","classname":"iis","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[],"relevantdate":[],"description":[],"dateofacceptance":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"publisher":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"embargoenddate":{"value":"","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"","inferenceprovenance":"","provenanceaction":{"classid":"","classname":"","schemeid":"","schemename":""}}},"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":{"classid":"","classname":"","schemeid":"","schemename":""},"coverage":[],"bestaccessright":{"classid":"UNKNOWN","classname":"not available","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"context":[],"externalReference":null,"instance":[]} +{"collectedfrom":null,"dataInfo":null,"lastupdatetimestamp":null,"id":"50|4ScienceCRIS::6a67ed3daba1c380bf9de3c13ed9c879","originalId":null,"pid":null,"dateofcollection":null,"dateoftransformation":null,"extraInfo":null,"oaiprovenance":null,"processingchargeamount":null,"processingchargecurrency":null,"measures":[{"id":"influence","unit":[{"key":"score","value":"1.64385446761e-08","dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"","inferenceprovenance":"update","provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}]},{"id":"popularity_alt","unit":[{"key":"score","value":"18.9590813696","dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"","inferenceprovenance":"update","provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}]},{"id":"popularity","unit":[{"key":"score","value":"6.00577981643e-08","dataInfo":{"invisible":false,"inferred":true,"deletedbyinference":false,"trust":"","inferenceprovenance":"update","provenanceaction":{"classid":"measure:bip","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}]}],"author":null,"resulttype":null,"language":null,"country":null,"subject":null,"title":null,"relevantdate":null,"description":null,"dateofacceptance":null,"publisher":null,"embargoenddate":null,"source":null,"fulltext":null,"format":null,"contributor":null,"resourcetype":null,"coverage":null,"bestaccessright":null,"context":null,"externalReference":null,"instance":null} \ No newline at end of file From 072f19285387fa3df2a8fcd0dfd2acbf448bdcb5 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 1 Jul 2022 09:54:56 +0200 Subject: [PATCH 81/83] include the class information in the measure XML serialization --- .../oa/provision/utils/XmlRecordFactory.java | 16 +- .../oa/provision/XmlRecordFactoryTest.java | 15 +- .../dnetlib/dhp/oa/provision/publication.json | 174 +++++++++++++++++- 3 files changed, 188 insertions(+), 17 deletions(-) diff --git a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java index 27128138c..b34ec9693 100644 --- a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java +++ b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java @@ -999,17 +999,11 @@ public class XmlRecordFactory implements Serializable { private List measuresAsXml(List measures) { return measures .stream() - .flatMap( - m -> m - .getUnit() - .stream() - .map( - u -> Lists - .newArrayList( - new Tuple2<>("id", m.getId()), - new Tuple2<>("key", u.getKey()), - new Tuple2<>("value", u.getValue()))) - .map(l -> XmlSerializationUtils.asXmlElement("measure", l))) + .map(m -> { + List> l = Lists.newArrayList(new Tuple2<>("id", m.getId())); + m.getUnit().forEach(kv -> l.add(new Tuple2<>(kv.getKey(), kv.getValue()))); + return XmlSerializationUtils.asXmlElement("measure", l); + }) .collect(Collectors.toList()); } diff --git a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java index f4763618b..92d9f497f 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java +++ b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java @@ -73,11 +73,20 @@ public class XmlRecordFactoryTest { assertEquals("EUR", doc.valueOf("//processingchargecurrency/text()")); assertEquals( - "1.00889953098e-08", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'influence']/@value")); + "5.06690394631e-09", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'influence']/@score")); assertEquals( - "30.6576853333", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity_alt']/@value")); + "C", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'influence']/@class")); + assertEquals( - "4.62970429725e-08", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity']/@value")); + "0.0", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity_alt']/@score")); + assertEquals( + "C", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity_alt']/@class")); + + assertEquals( + "3.11855618382e-09", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity']/@score")); + assertEquals( + "C", doc.valueOf("//*[local-name() = 'result']/measure[./@id = 'popularity']/@class")); + } @Test diff --git a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/publication.json b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/publication.json index 2c52ce269..41ced45ae 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/publication.json +++ b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/publication.json @@ -5,7 +5,37 @@ "unit": [ { "key": "score", - "value": "1.00889953098e-08" + "value": "5.06690394631e-09", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "key": "class", + "value": "C", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } } ] }, @@ -14,7 +44,37 @@ "unit": [ { "key": "score", - "value": "30.6576853333" + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "key": "class", + "value": "C", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } } ] }, @@ -23,7 +83,115 @@ "unit": [ { "key": "score", - "value": "4.62970429725e-08" + "value": "3.11855618382e-09", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "key": "class", + "value": "C", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + } + ] + }, + { + "id": "influence_alt", + "unit": [ + { + "key": "score", + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "key": "class", + "value": "C", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + } + ] + }, + { + "id": "impulse", + "unit": [ + { + "key": "score", + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "key": "class", + "value": "C", + "dataInfo": { + "invisible": false, + "inferred": true, + "deletedbyinference": false, + "trust": "", + "inferenceprovenance": "update", + "provenanceaction": { + "classid": "measure:bip", + "classname": "Inferred by OpenAIRE", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } } ] } From fae681fea1812513f900ad6457455dad9c1f80bc Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Sun, 3 Jul 2022 17:39:58 +0200 Subject: [PATCH 82/83] [Country Propagation] add check to avoid NPE on datasource.getDatasourceType().getClassis() --- .../PrepareDatasourceCountryAssociation.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/PrepareDatasourceCountryAssociation.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/PrepareDatasourceCountryAssociation.java index 42b7804ea..b9f3bff52 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/PrepareDatasourceCountryAssociation.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/countrypropagation/PrepareDatasourceCountryAssociation.java @@ -6,6 +6,7 @@ import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; import java.util.Arrays; import java.util.List; +import java.util.Optional; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; @@ -87,6 +88,8 @@ public class PrepareDatasourceCountryAssociation { Dataset datasource = readPath(spark, inputPath + "/datasource", Datasource.class) .filter( (FilterFunction) ds -> !ds.getDataInfo().getDeletedbyinference() && + Optional.ofNullable(ds.getDatasourcetype()).isPresent() && + Optional.ofNullable(ds.getDatasourcetype().getClassid()).isPresent() && (allowedtypes.contains(ds.getDatasourcetype().getClassid()) || whitelist.contains(ds.getId()))); From 0c1cfee39684be0afba50a80e401690cbc5c75d5 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 11 Jul 2022 17:34:59 +0200 Subject: [PATCH 83/83] mapping oaf:fulltext elements in the result.fulltext field --- .../dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java | 2 +- .../test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java index 739be3df4..a05faab80 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/AbstractMdRecordToOafMapper.java @@ -379,7 +379,7 @@ public abstract class AbstractMdRecordToOafMapper { r.setPublisher(preparePublisher(doc, info)); r.setEmbargoenddate(prepareField(doc, "//oaf:embargoenddate", info)); r.setSource(prepareSources(doc, info)); - r.setFulltext(new ArrayList<>()); // NOT PRESENT IN MDSTORES + r.setFulltext(prepareListFields(doc, "//oaf:fulltext", info)); r.setFormat(prepareFormats(doc, info)); r.setContributor(prepareContributors(doc, info)); r.setResourcetype(prepareResourceType(doc, info)); diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java index f5cb86bfd..b75f626d6 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MappersTest.java @@ -122,6 +122,10 @@ class MappersTest { assertNotNull(p.getBestaccessright()); assertEquals("OPEN", p.getBestaccessright().getClassid()); + assertNotNull(p.getFulltext()); + assertEquals(1, p.getFulltext().size()); + assertEquals("https://oneecosystem.pensoft.net/article/13718/", p.getFulltext().get(0).getValue()); + // RESULT PROJECT List resultProject = list .stream()

f=GUPf~x~YOl;H zms$NCvid1dukaj92Em_9-;bQPgx{8N)bEjNW{4eg^fPrqz!nu|d9z}l2bj{_Fo8w) zf52$?0fy-I(|h$Ehd9tGox=T2ISCH_;o1D`_k85kZMAc&A<_;m#hj&S%oIXz@$Azh zKcwi!BxobpjVSOlhqtcD&=B?L}#U?!mi)43yUsoPb7%e^)HAwNvhnvJ(WAQ=J4ElqSf~3 zI6i(d=BtkE4il?-9!&;lF<4#&?UQH6wZ|%}j1Mm$m=hkSgtUZn?8&s9#f)?qB8ofw z862I@aBnnyz@Zxu$ z5{ZFIB}2}1wW(_Gzp)F%SK+eRB1>XSQu8DqEys2y%&LaJ!KItwDV8H$lK#|L>QgUa z(oESjvW+>|YA_v#F!y+pVXr4I(w{tv`g=KlvS7cQQ563TWrt)UWv$o66Di6J$EF@9 zfdvl^_qsanuH$@}lp(uB5QA7)6!)95gQv=uh4O_lljX@gY+lpZ*QT$`9M^AJUu8j$ zi_cLh+huMxf-W;-z`GZ!%R=+Dn~5wmFR#!%S zJ0*DwWHiKGK@2G;34;!#7N`2MR5vynZ@N^sG$AcE$&O#0D=SgoP9^GFDi2L~a4>t8 zljrfxo7ve0t5`_c2M<%~DXJ}(?i+PrWpH!Wca~H{x&zZ7E3Pr0_zAvrzC4(?ksxLO zaly_rKTEl`9Ae|G0QC>O9Bz7!|$=c>59 zzMRjUQ9PG;z$|yK-(1OZgHLIGF&&bDEGwB!*;9Pb#B_4kRIa(`@bY|@pRT?S%97*5 z9)cA$H}WKvFO0x5aiwD=884L7It?ZMc}=;5+dTyCWD0+N?JL^tUFFiuZMEO*wAxyB znz^ZJy$1ZhLde%60lrYvKB}4X7SIrbg}>IYrVGk+FP$?zos0b<3Qge7Xgg@zA?ux| z{I|7W*4T~-<8E$wx&~I%>H6`~#rK$m$e$?wG(=!i$whO=OUydyiD=lDDFDE%e=MbC z6eO??tUS+tJ^9%_i+IC&tZ)Xlxh4Z!v;+);VV;&!{9#Injy^iOWM$g#m@-tDcX_2V zr|P0p#~q!jS2C0{I(vF(gE<&~;HIJUu#*8t-o{Nc)S2pv+n$@_var;J3EzW%glWO4 zF|%xc|0eH3)YH;e{Yvxk(K79^^3||yW42aAe!zVEO>XDe@arFU;C;Ev5Z>LGeWrnH zfJYhRXZ2aSA_t>SYQL|c*K=Z80c-B+K2tjE?E30{2wyIDe?J|ulooErQX}n7fk^7u zOGtBhanQgzUj$waT;6BY4;QRJVK3lMP0@aQtel_QRGYm9xUYHO)U8gt+0KGfYg!9j zw|2b^|Fb2YI@S5**(Q!y*sL^Gj$1s82x&x!IwB%6yof6~FD1xSC4BZbLO&ycw>f~f;;KF9VwNmMF{P5~ z^r^q9Fcpl%1aIhFzULl9E9%Y6;a#F_-FIi)WHLRMT~ zbPXi>wFy?mKi{}+)?<37!qksu$;kkNcVJ{FW(%lrRJmfnVaJ^qbIUU-BVn|K5YVrY z9f+yvEijjwcGD_I`NUXmqW2>Kzk2|FkG|DZG(#gX$cMxrn+iD@SQ$%ML0E({4O zPTot(+q^P)n+vLZTOx!{j%4V%7YdzDYg84`!zX)G?Vm1JJ|Zio>t|)luVN!|XL?TH z!VJi*8S@|>avl!C;WE*Buf39qz8MUol=BTKx0V8Q_TcSv`5)DD@~X#dxGGn!8GCkZ zJ-C!PDVC!vMPKFyHXn*#Ezfujx9izS|)r$BDWk5@u#Gh?~@-y6`xEw zotz;w$VhJ1g*P@0X5cjYH0wNvLZ%*r<<^uiFNc3Vvx4Tp_QAB}XKLhWdTUN1m}oXu zol;$z2RHNAq`wC~@{S=eH(wq+D}T+kRJ`95mdS=Wc{#X6+_;A_F~Lj~%sGOBn{%_E z1`Ux~vMS)zY_+=R%;{2JyJj3%s-Js%pRK6A(xtH96~)X^ZFgti8!DP=mEM%Bm??Ka_hB#jU?(>)qK6c`#mVduRE537ps&I8hke zTh?8i487SglE&{Ts-GoJVrIOzy)`rvLmD_adL6+Y~0y%5cCBe z%pH%7G_-#1%xIU+GfK-ld-gTVnI(=PQP_pZ+~ZL4VGhMy_`AdtLrC!rP4--UM{5R^ z6?4r6gG}TC$3+TZ;WtMT!n*P$46JMz*oJ`4nrLC3UrIPw^g>Pp4wi>^F9kP)UBU{W zt1uNo;#&!Rk5$S&*Tf83#LkxsqLV^lnF~_$mz>M*^k8tOw}vGgt`IofYlFP)#{n7x zpwtu}gC%4w)37J`3CEbAw7qp3P|E!e#W8wFR?z$aLT>i6bS9=$Y(~qA!&}FSCrUW~ z!nKJno~MeT$%g&nS*L?PRLHMS9yHjZFgJiU@86-l>;wt{Q4Xc*a-?#VZ(L_>HIR?d zgvG+e2mp7I+u8Zyjlksq2X_|0&DkPpD;@y19 z;A$X=7z>XjTaRKj77GyH;SEb}?TVx0t7F8Ls>ro|wjmR~)o-o@k5$)R;aJ2ZcF&jC zz153f4|Z?8eYv5~H{*v@M(*jjUxf&(*(MO*D+lV~0Ry*Ng+(Mpp7#gil|$2ZO7m0- zRu{$AmL^`!FjF)wEtr33BUr3>Rzlh&q;36Z#y{Vss#qXcs_>rb%GGQ^NhsyQv2Al=D&iI1g?A}Squ!%7s1|QQemu(B z>)5AtID+bj7p-3z#dH?NBA_WN!#*Kcc@wj}|hc(H5Q7o7!I7hB8w?afY@K|HAGS~n*urO~S+ zFr{^BsFZ_<)l2xv%Ew!>+*JZGQnprnvG5VJP~)vlvrsFM;XaJyd{KFB7~Yi}d~%qT z0a)cTjE9OG0)`Q7TbUY9CU_dK<4-6UQT`jLu*`iisa$v)l&_+8R{nLISlT345&!XW z5cx{d^VXV|mYrZJUvu;`HAVmvIm`=`7gqrDzqxGx+sxzsFlO%C(m$gC3Znt<&WgO- zn~%4Dry@Jfio$b3+3%hS(GjDPpG}zJQ{S8_gGUdn3oAV=iGadw0(PwH=gGl2T)?iqS~Pb5`9d*o zW3b=MqA_uWS5)no35(TJJ^yi(J5slDiDOs=MdY>@Q?Wue^?P$PoinoL&&J4NMAZsL zrr;l&l~Z6u3sp{uk7P>l?qX`$KBnbAS>uu8*OZ%oYMRpc&wo}hT-WaE?QSPe0a{aQ z_w{B*xK7iX?Ru-#=7GH}!gWzm+B%Osw%|q>*BcQXqsSDlQ&cfVU=GaSsEWdQI3H^4 z7<+L1Dg9djG#J8>&8-(+TBZyX7a@aWC3CI|JoFKf2aOw13N|_eu-##)8Z&{HYSrL| z&u|b%cYSc3XOG1rBUFh)NVsvxu;I)@6PoYR{BR2`5g~JecY0tWWIQ;o01l36_*@?@ zW147GWhYz;Iyo@|XfilSzK^o8N_TE@9EuSYha z`j`Lp8S%z0hXq|+T;Huf3B()V+gONty?|D@RLeo{5a&GqWvI}_FUhQaj76kbJ4Bif zD;p3;W~vI0Rl~UqrYM!ZCkj5-%IW+DH-Z7m2xm7Ny?%d-D$8~qgZ!^RNaw;CIq0F6 z8ss+o)G+t$^u@DAY+oCASh()Ya)i25A8DmNF?L87qgG?hQ=bQO7&dmHZE|%lbUkR4WD*f2a%wry8o0yt85<`A{E#4`q)lr>_c0Q*4NqVugv#g#pJ3u0|HikyQfc>7%S)-sW{(`B{ZByVoxZ*d125?|yS?}KQ296g<_H{PAyZ7M@P^fIZakcO--KIQ7-@bah*0*^(;s|kBa{uUp) zR=H}0!l$Ku@us0EZ?B^FNCFJFC2ka9C=D~i@iO?PDTYshb*>Q`YR#t-d+&m$c^fsh zm4Mbrfq|8;N)Z^?yG|7rqX@Pnb8QQr(V^s%G5SdbtSmJX{fM85-WCshmEr=i#cB9_ z1yhw#a_ji8Y_7b`vRp~oUp!@hYEf(9c(#Kv&Ep@%^T8({;zoS!Y@8oV{~2+Wg61B_ z9d8}RHn~6o3yV3PPe*&Ca-fWClXkdp291x)O&@#9?9hbO&rTk08M9q;gGF;xvUh=D zxHqZ7I1QU;#x3o0cRz4mN?XsaEi7jLV%ZO->!;%jx4{-B+aH0z4hJu6w)!jhLa>T$ z618Vua0m^_t^z(A-rwBaU1p;Uzvn_3jy6uME=csZa71FnU{7c={su~AvyTQQy| z>spQy;ilTxJKcU(iLln~b?U87S8wl*Iov>mAB%2y%LT$JEVU%QkK)3d`QF5xfzjO4 z-QX0r9$%P5q=TpQGcwzc$K=p(r&6%s??!2__d5C(V5@Fj@4gDKm8>Y1NTi~WNV~v> zB;e;{$@O0kfTR+D2w6~G+8dDt<&}CJCziF_Tu|<~69fEU<8)-<4^q5dcsft&sY~A8 zO7ZqmDX|w1FbMZH=B{xS%DSi^o-UH5$lG6EVb%ee8eREHYOlZU^r$2%e)UAfgShZ& zJZ!DJ$BJDK3`2(9k~!g5niDQaFZ~on%-@v0_-Pt-d(z5WC>wx%!MZ&({yirPVvFZd2=OrRb|S8|{@$ zHrh)sQ3Cr4d@($$|N1Cs6o$i_>%VQzX5U>YH%R9@AZxc^@*Ha1w)8piiwYKA-!o@T zE!#+#13w-XN|=)zy_5v@m%y^e@WRJ6-o~2p?6o8nq) z^_ul&qtV-%Gbi?P*RotEliBeC&J>0BD`u>Nb-;3PVOR*x;VG<48&@ZWW0%w4HL@ja zYi4mDF_|{vk;mG`EIIl(^H3@NFiG=fuhYt#G}r45y{FZ@z`Eb(LRm}CmqUHw@uHWTy>qvVR`Z%@FB|dVx_W;$^H30-# zqXqri^q%9NZwx2oRw%A~<#1J!`K|TI{DN7ky`@JS?)=!5zq_|7lZMlUisbhhkL}2^ z4-xeb3`Ab$TQRyh^3hYc{o3DSB$lpK~5&*vl5? zoSh7L8@p@x?31f1-{395YyeM4xpT&_aRlc7)V~?-zu~_HzXZ;uFZgGv7-atr?hr)N zo4wX*6b+oDUr`i|m4%ch1m`-cM^DVJ0k?cfj=)$vz;S&=%%z7e@}L%%TH=u$#*`S@ zXTyf`wWfTe;}PK_AHQo#|3CkzT!^fp_B!2ez7ScX*VD2?WO}z*?{s^5ySE`k#(&ep z$LjbS{A_K|EI~BA6#YsvO$#L0x+y`%<;?hL#z~(I1%2t5F%w<+eog(z5OEAqChlR0 zj1Vye9>LR?DJ!ydvFCXa98N(jfasd4pl>8P`E1%q^iQ44}rGC zZS(T=&jnq)8>XJB}VzT=BZPvE|gCEUGjK3)H2rB7K!gj*j$IHjj<;RnkUB`YQaB9efqN z(OjWtyEmS&+Gj)*^vbQ{`ZKV$FY7GwTXJ?T7OM9}JD?d0){5M&ORn1#3~$eJV%CrA z_pd|cGv+ebB)oS6^s379XVwkJeClO6IB|3Dh>EYRPCthy(@?c;yH$BdhU5+JZ@%s3 z(X7o|F?rNvh1~j_TTPid&*oF87wShysT71Q=iRu|3Di9$JJXSDh@3~yRp>z|tc zbePnbnd(7(H4WRJ(#-k>p1_E9YUxAe@}a<1+N`N3S=f#ZMc;yj4f$xyg}+P9J}%N{ zSfsg1^hNqF`=^^_IHg>oluImHE-^M1nR17#7niD)xUMj~rYvj|OVCpb#B-VSV(U_; z{>*;2l{b*M^blM>Qo2z}H@-6IM!CvmMO0Z8QR}OrYFrqRmZ$}55zR_y1%sU;X$_y~ z5z)yjtDlmJmWS4$%wLVh9TCQcPg2s96uPgMLig2~*^)T-RETqb&^3ZEw+1E)i@3r<55y`J z4;QvA5fL)~B$(I3CS_9RCVF);e7$+}Q+Ejt;-q;pU1kNcF-&wRm$A*u>u9Q3GjQpt z&~DvJ#8VN?(XAiBqbiA7`B@k#%W;EDZCS~+EV-8BiJUjewJZseizi5~?VP)bg3TCM zhFLdadn->%)%a-}!Z`|jtp)KcUm}+ULm$IN2TRFBQBzotekf_pm-sjmyAAg=zU^C& zV)eW>O6R3J;~&NA5Wh9v=#%ke_N3`y0>Pgg`@zhhjNV2c*dEgj&$0h??6~TD;lMiM3f?`0QeEcX1O*R(as05L9l)Z+D$rOM;WB*g^q_NM zAPkC0poQr&3?0HDF{9Jm1495eQ}`2Z;e+k{qS)wmdWc{pMi>JR$49enLtj|#4X6JX z1nVHj5Vk=@YI>WTdY1ua(TFpkxoGR)(}jP?ED}7{;Ogh8g=@(p5RDQ7ipYi!kwO+_ zVIK{ay7JI5A}@|H=p^W+g=ifHOHCx-!eJm}P6StrkW<2=!Z5Ny?qOWzP8go+7^n#v zK_t`B-Qu#OshHifTOL{XP1$n){VVRRNN_Li6z!)G)VI~mOH|$H)Em9J)++$}`zcXJ z_zFrVgK;YKH{AQ*65zKo+|p}rSs1^~o>VnCQPGvaAs>t%TbW_KY(18P6vtY9`B+PX zzVMT9$e_IzVo!ckVrwxa{dZc-+EO98v^P@W+E=NNT)lEzNvfP2kLr;sZz3K(8$xT8 zZ2~kHC*bs#=S#kII)$>XH|yO_yU}W7Qz-8cx#=`k>xMDlV2!}aVD8UmE~B&CyPNMf z-?F1H-*ZP{=G;sd89sI5JW==#?(fV}f-=kHyrJeyV#0n3%aw{I@y*wXs3{*fl{3a8 z*9TXASHir}Ak24`7g^cV=+rn1#=louSyO&DpKHn;IN&p99+T6$|It@kpQ^_dtf{S@ z*41)x1?$~@rB0muif|EbHGmfa zZ`{H(gcD#cmX$>dm{evYV;HNk3xhkqDPqU>(nA%A(Or&B^y-av9VzK^#wPF@EP7u4 zctgPAi}PfNR);u*hapBAsLFfQq-M^(6MG1ig4GhiAC8clPwSSw^ zSJFY34!U&EQ(ua7(BFcCz6JkPyR)K3a}Q_qchd&<_`RnvP8VU-mPLBylPbBVnj=s3 z9N)?2xmxx%i{zamtjt#Zf*V}nGc{R1!Z*?+7X7pyg*J$@UjjeT*kw)^D9BQ<8kFHXjB+g9@PO}K1FSHGyVuXXg%sj%O3^s%YB6LQ?qk*YHMlWmHW zFJ~5X?~~*E#g!KN{K9+}XGD^G5>*Z5Ymg+p=RZ-Xz^g)+FiIDmNP+!z_^2y1^0 zTOGN^{LwP)ac(u7)XPT`tNvikKg<_XtU^}d-)R-dgUh?Yr^~WXu!e~%VNDm;09`M{ zj}GL-tu`tpF&Q?lrhEkdqo#cOz1372gX_xWB6YRVZT6eFK&&0T*KKCyA~n6)s(0IZ zlhq|}n~St~K-O|yB#>fm-uJ=9fYuoz=Z3f`yWnyOyg7r^33>@|>)`7|3G&38n~XAS z9MCsJJQ6uC$_uznUgBYY)%seuuJzl!zcIp#1bwwU=im~rPb4x?qcPNIXvj-WS+4k)_3 zcq^h;;<#LNr{8-q#}-+6T&xLZbfIIZ#+ z%i7&=#P2Z?6;;|55+$JeL(#3FgkT3WJJ; zj?)-H*zr-<-@`_gTDrU1^^}kX#uvby{ALK^PVw&3}37|+j+S><*wuS?ypH=1=#Ke3#0@s71j8?Ss^ z4E+=e7UJ-clm$QM$CgunvWQiG7IVV+wo@(Vi*D`=Yo{|_SWM&fW}_@^G%~wHA%L6R%R7f z6~Pu!Dnp1Q{2lA4NPsldLjv~^X+t(sbyvlYmLP=9WAm0l2phS#wgDXoYo~s18ngP4 z6L2m2ONT=uXq|3z#WfyWN2u-_TDGM*%7!g+m27`d4cGT_;}23VA5E+ej$!F3po8-K zY~1k%m>B_QZ@js}xd>-FF=ExmfNN^I(a`f?z#FQjcl1MHz~eY@%(HW*YV;@~ubJTC z>%yC=BK%WR(B@cZC%~5VU(6H1nNU-pN!DauQ@(}n$^|2)8gbda&xSX}KZq5;2WKd7 z&EJ%-qyU3#Wm6N^ZN#5_%f+4G0zc*33-FNw7n$d1H>|OVIWy+qw2=@D=jT#JNOO)r z2WvhCLxZW#d@`_{atPy3{~W^W9oL}c^Y9d?DYxd>m^hOcg@b@CZ-yU|lrmlpcX5pw z>oc^|K&b(K#|(`8uE_h{VjEh!(a(#RZy;$`qjO@>jh$+*byX{<@Y+d@g$zV0`D*~v zhBBSX7v>i1ndNuVDb7EWWeN}Ga~9V-HfGMHm{cF;%`9(*O)lx43!) zPo435o<}a-j*)=W_WR}nv12AUA|_&J3+w>i@I+g`5=+>>AG^e3`g(gM9zziIgT!M( z_N+kog1KWc8!tUx90r5<=+|Bdzn0nb8_4Ehn2V&ETOGj^2*hWwUI~*?F@OX3ep-#_Munz>_)fQH|FW zMgJ5F?=(Lt6r!jpgSj;my26*grq+YS03R`j7K1PtY6*+XqN0$og{2he0O2qGKdt>i z(>`d8|39O)LhElqP}k_!wf5^JsM`@2^6G*iuO}{XP(FjTHz|YMeXmHz`dgkPUwnH_ zyrfbLd-qADY)r~~jDZwK4bPgm0_Uc?d|Fam$ForARwRC|xBu1qQ+^RX`KEok8C*}?~A2d2maJ?-^2Y##65OLthRKGN8ihJ>u3!{_YQFi zbu!WrE@QzG-+aFv#Lq)sA8S6gz=#P5qTw5p2^Xo~|@LT~l z8cTwG2i`UpM{?Jh7v~?gO2i9kgIo?6mWrq6eih!0gl+1?q0B)+OHiN{>{1%w zDb(e`*4+%Ql&dkT)P;Q?QD6$Vq(6mi?zq;3R&1;UYUH?MS_>2KhvvCE5(7J}?+rFO zLO`t|v{nF5m5jyq-<{pDs-q_~&4t(MZbJDTx16d>@E+Jo3)^^s_sk|IzCS#Za{~5Q z^o0&t;UBt8#Jd(Lf@3B9VZeQ2*`y3c%2?nOU}qq>bw1kNwAIs~KO}NyV^}bj?L`YL z&t?v*b_$czrKJlu{s8^^RiuATpoc8snm#&2VgPfZ*k&oyiPCn zg7&zpC1nZLld5^Km?U^q9e6MGb>QcE410-+1|EY?f> zD(qoF)vMv;SsoTN?Mzf<#Ip__j`l;iZ#-F!&GBLEDkikZA_UJC9%K0F%z47Cc1A%7 zAC~Ex&w9EhzIJ*7`1sB^$D5%V_xXs&94Hp^D4aC@dc*4J?7Q7BzvM|^8!m1a#^|Sq zv2@G#n9GcoBpCNZedH)3)K#71QRJZo#qft|6Dr(|VpGBJ`F#0zfVbgunyuas%g0j6 z%?A`yAl@Qy@;zKSxHI4xG_??&yq^ZMV4hjY=)cntQuUMg<>U{v?*5h{ub9s*5tZTs53BOpo=ZKrq zb+ldKer(MHIx7~A#ll|ieP{OI`QTW+S6~Yec^LS{cyi#xc%ak+dB|J{*WoQ-8{w2d zfCR1GH7FGM-z2kS8zW{0^Dq(Im{f{5x3rzhbT^0(jCM9?s$e!-zm5u=B?!68=|AI^4kKY>Fopo@7#R*@oorUIu#)5XbYMqQ zLm45w9o+=6P{u_B^TNTOGrQ=CTQN(<10$Ln5$~BY21Ae;3i$4kA1UlBty7--$4QQS zAlTUjY;xeHqZ-)0=KP+Jpurqmis8br$3#e06eMM4c>JE{OK5__0aBW}zKTb=R*>Wl z*$_)(CLN0hsKLn24MJIWRSx_~sKJE{kQRZDi=`n=L#bR~x$MNus1(9c&xWUb-vXXu z=K-dCah_qR4Sm-%!P8+)tSLV(v`eM)@xFq1mA2mMcJmb&HJhz${liAR+v)c8?e!01 zZ#cH5SWJ+LixP;Icvd9^)bib7yj1Kov@Hr48S%qCAsoSc(-}s9@JGq8A=36zBp2Oh zIMBuU1lO5l+j?v`&p6erwj`ugPFRam&`S&jUho8_5SUZL z6W5&6NCe=*Dz-CX+0rnG3#Uyun%)LH50y^b-+U{eBq&BlI{bQhcRPUTemS_MN+-wl zEh0@_2h4$k?SXMqR0`^i!EzfQuj%#mK2n?qOopPL?u%5xyScICOo;lj`MrD9+z%s-2@C@r= zi>sRNV5`FqUp>x8%4$luL}rwsJh;SeN$_GY7P)ffOa3?|$|&%hmUEAV0g_)yR7X{K znktX;h)9}h8!#U=4nm*_Z^6vQ-ISuFbo|16<;R8jQEK0uJPMOhIHflRlD z>Gm}qKTS54D91#}ghJO~+t2+pY(&8s_iBO2{ROO!oPzKyP7TFr~gD1`Cx^DzEj6sudt$Rm}4y5aOKh8WwMCHhae>%P*bk{tEsey|5>@ve^+gFdc8cM z|CXvZ8(NiWRntmNcV)85OVf=+R-HQWUY%3~`O|P=kOEklC7NbBfs<+2J`-6(PPY*i z=F4cY6n(B7Xx7UjCdj5J9_KM$78%-Krh@vwowu;-3Ak+y)O|+$a}J<$0512EV-hb^+fm z1C(~7h5osijgIS)VRw|zxVBtR`QkdkqAc$#-q}a?z{(RjH`P|J(al5Ttb?=F%EDP~ zMi(^e-KR_ik zgHq7AT`OFpBet}c=oo0UxJOFZdhsuu=g(6oCV9wdjJW9YniZkcl^7|6W$@oA-;8;{ zUYZg+*@rK1w9Hgxptx9G$wIose~)qFNnni)f%(8XlZlH=({K(&;?GH-TYMb00C%nF zM@{+Y!oYe{h2ubLN-`n?9fASElQBlXbQ!qdtHQv4w4AV&BQGKYSO4;#?$uRR?NmRJev1-7)@o;zNHNU`OQH@NdV3R&;u&9lR!Ojq8Rr26vk5|MnFrXTzb zuX~2(#J&pGGJp_ux`J@C)5JBE$zN2aXm#R;O0LqH&C4>oVrK2?DzsE737!$hK0%N7 zDJqN>Lv|-OuYv4qH_!a+YsI-1;ugc>tgsO-n7``va7?|Sn4gqnf0ZOcgQRd^4!#id z5%%E=`HZ+Fhn^ET6dpA9*?d4go8OfG051{t&;R}I-PwP9FwQC*F|C-=yYR(FOwGuD z*$uTc3|+}+QXnRc0f~egnxOtTB?`g6LS>@x10_OqRs5%RC9`lD_ z1LWUS0!I`dlQN-059T?6w!Ph*dOAo(>{Rvh>;O;xL!9)7| z4Lo>#9_#TX>^TlhrF|tBgLJKfOHtRe?_(AjV^h;#FnHecQ z$^${y(0NWZBrQ_Bm>RPPmp)+ZLN(>G&Wg|vU}2i8tW&}I$M6r$J@V>nB(qiDXU%9T%+rUBM%bS=R-u&9ic zCt^wH)Fn8D5fvUrat83IkvKyrodrJG0?tlnE=+2ZF^?qkSlcnfWDvNtyZRQ`d$4$0 zr-r@Xp1q}^wk3N@$tP`r+$noy=J%5>di5E0sSqR;f}(s&ISN4)RQM6y#-jtaXLw=4 z%Y<_^+#$Egn$(nqZ6fo-`s~SOn>cn4b?VRTcPaMs@^253k&%2nl8>hhJ|2lu*bb#I z1XIN(8k1EfoWl5TcvNH!2hM9{w0YZlNY&IDLh%x?ui~8e)L|UnI#S7^kz)Qr+Z|s# zC%T6w8}^H5NvWcvNEM|SM+Y~GBwi{nUdnMN#@zCZ$`CwVl2DQzBTeFKmH&Hbe~k=0 zyg&M!%Wgwj+ogU}A>370F)JiC@es2Ln<&!EGA)(3V#bUX1-&L5am%BZ9ze5gx+*Sa zLwi5fNWG6RZcL5{qp{|%h2=`3ETvLga7B@VO>GlWu#g=%dSP7G$6}yEE8~?dh0y3W zh+{ym`nealW+?cBF-+L;`23{hPEG}%vAamdB%407U~i29ZZOuwwR38vr!PeoyXdoFdn95MI=ru2 zz%1uRCl$;Ns9<(M{yYIG$4l82F=N7*Y??{#x@ciDAJc`UX~HQ;f-j+7B4736NZ~6I zM`qDS>rt%63{}s=NTdmsvZeb*8gDC0rIc(7?8eTB`B|*Q!wY8kx*m-Yo=7Ms#*A>E zi9C?+Vf#EYo@#}@6}_{6U`y`;&ogbiI9{HAsUy{8H$9Im-2)a!V3>cK2Ae808S{+$ zH+L60RZVa2hh<|xm_uOM=t1eD-+AM4xO>Yq?5#~CFezLv%1@Q{+(n| zM-V~b3I?QUoo&cqB_K@#(kj63QXrab7ZEQBL)!s{b}SNoMsD5xV{Gg2>EW;IY;0O2DH8Jkl>tnCo`ic-9*Q8Ezi(^pJ)`f|ZQ~TeWmH zXA`r3E0JK)OF1zlm{JU=Ys+-StDU71VkIF~5@IDGRuW=$f)K0Xj~fZGNvpt1w94G%oDyQn^4hS9;4&3?!ztv(#E08;&3)0lmnB3H#&Y)m>2_FxXOD z^?@3ai2+-NY?X-Wq6Te3bS+=J6O1d_E)NwJ8g{u7FnLIq{nLc_bCazXEj7*`z zcsCp>kES`M+di1=tH_V!5vVLsR)Q5WhP`TQd9hbo9pP8)Q^Q{UxcdF-`=@_yfxYUf zy2M^dvN?$ZlbWY*n}Th3l+GBORG2B4wnldh0MEpuSO?PjpJVEcZ2tnpKPBWNq;I~)v`l@D;V5g$|<2#Bq6bM!Mk zJL5~7&q?kS6$Rty{Y_vT%#`BPg|`*V%R%PQlJyldsC`9iC@)}%#0pL^?TFKYPX&yD zZk`I?9h|r$9)|E1<_KJZQLIldG=U#XIHGxPGVX@Jlf}x=yyUn#+9YEr55woP{@(#2 zM-tQh!}9US7O~HxEFPBcPT)mg2+#>!nAxdIuuO!A2*t%W4L8V1=P%(Uc}=qFz)SF{ zV#P{S$;v$?s^rz8N|x@7f4rx16%XxMm^tY9(UdoAaLBwwPWsO2J%wgPqI;OZKZ1paF1gJ|hDXgJAI6z+c~Wr8TG?e@;W~wOai=AdH5p zY5i_NAdEqZ_#Z8`=>4f=gW+^e73632&NWv~F2q7FRc$9jXBs@d(mJAUA6wZNi z`O7!S)`vqPd`M{biwtP=j5Ok&PD5+vM~^i6buB-71g>cyEzt7E;qOm~&PP|9ss{fn zQ6*JIm9*ZSecZ4l^WQ{r3cVRD$?L;=T!qJ(BwE@?v?TE)5>Hb2G}r}#(S3Ku%_uZ; zmq8a1VF`@I)WQ`Zffq*yUP%6+*9o?e{6Wzey=kPxCbh6!poju#Q;v*i`0hkNgRF4& z8%mkOuxyunK1eC$we{d4$>8wCqe*seA}vl@Vd4^=3wW z;wRIEMSR29#FlC7H&-Wqy15%T*Ay=1tW#vfg2}x0O7xs8q0A8XfCcbp4yF7VEg*CRbGL%4UU>#Xb*emrErz6F z(3Yw3M2|rq@ChOR?vn-md?0i>qrMLTkBD7T^oFK?pg?yjiG6E}I!e7x_d8Y{;pC!Gu+8G*zq!3k(I4@d$jwKyk3&mzaH}XN@Uk0 zJN(L5uZbPL!bI)&af1@th-J5?F=Min@rq?(MAgVn8Z)sXM$P*I?Lq0>#89Mfdy*Mm zmhQeWW_UGi_})ToYif|W0<7T&!IJzJjPno6{%PStFN&4>Nj21GcGL41IN*TP*4=J9 z13H4Hs41``w=qv+BW~mq@;<;VUJApGh#RV7YE8ZpO>gs+j$wV^)D}mn(qw~LD%2!7 zP}RnobktV6*UU$D-S0K}g=0KBCJ7`#IYo4kPt)J0ur)`j>X9^!_=`G;bjb17^$=n(~`A&6_>&-|X$+UrIW>v&W*u>ma8 zlZua0wcRLP?dVM{ha07-db2RLn&rGWgNiQW@x$2g#&@_4ets3BZ_GoOei>>)Fka1e zS&T3hakRE2e`!kAmn!>Sg|NPK-@%>~;g@j&3iU3;Ibd-2%?J}ozfk&x(l3;Lq4Wz+ zh2a!UckWuLk?nLITJ(o=2YWp|-5dN0#_FTvj=ibnZd0QDHBW_hUe|Ey8tN3~Il03# z_AvCGg9>%!%3~+k62rO4JA~1Lua?JdCr1${h#7c^F-YY_y>M*XoS0anWY(0ghW}`p z_P9n32h(V9tu>T>1$AjPwcFNvyZ=}zWZL+duWb-mYWFn5%Fns7X$-)QJm zvClTUqEYd95KW2QE67vkRWYUF0#Ws_hHEunwK%s*J*D6Hf1=AW%DUUVPH7G;Qk-@w zN^vUFi6`OGz6p=7*ph8z+K;#PaMVPVb{vbUb%o(wVWUhAvoi3!V1|K9g+Ql7#Etk{ zV&)(%pNVVC*CPSnjI&xyktGQz!AVE$to-Y!x_|5~J)-)oX1z_mF`82Qsj*g)%d8N8 znE7+(F(+k54>+ZvXJ0HE{2AL$&*h@ys@!raqnpP^Yh-4%{)>vYExGmIoVhhJlshu| z>)_!`vnbib@1ytV1K;^ng+<(_p-{3QKg&QIpc~5i2t* z9Ur1Hzdj0 zE(x`|vBa2}xF9q~u%Na(A`!m7s*sZZ8r7d^UxberbO+3=<96CH`f$m zG{8eggpA-oHI31f64>ZMMQ&Y`pI!=SL>O~CuGtREQp(B|{m2Piv2VgJX2wsGS+vwd z+va7O6v9iUsp&X{1}cwm9O5UtEApc#BZCcF(rwUn`q2=kZWu?^(V^BV)y{JXS1hrg$>O4Qw-4K=r}wGD=ww5W*chBQGApngwtKIIi)*cyI#$-uP*vWP$oGZxMxa^Ivnk z(C*pA6!tG=@QmCSMKNk#sCd8gsOyJ||LR&lL#5!_v_=?hL2U2M<=p{lm7brUb=4LO z`wLe8<$Z9l`0My_-*7z24F1}A^aa55e}WD5hh@VYP_C^9my%Dh=H5BRxE8e-{=C$b z?%mhQai1W+rq*xes$|miW-lXxeAdvkPF-*7b-mH-ZzezCKWaC+dD%}kM4G8SDTEfH zz2F2RGpDLS6gQ6P8|+ktl!%nCDLU%bHSNTLsPR_Fh-t|Y)4VY`8Tyi;uVasn41H}L z8yWga8=b0$zRDS$6u(Ctq&fVBEN8)*j~sixHD07BdIOt1e`|_^%gT zmsxrzDGtp?*LXn=K;_nP?3!pC{PDe`bnl0ib6c9KuJ^k6fG_P*=YK zjqEp_MoZg*vT?Z>xiqSVBoYR8u8=m76*Lf?1C~WZg<*yl#kd}ph}E%1(p#@eFz}rj zhL!WF6DU6fh$a#^jtxQ#%OmhNVJC2rW9Z2ScbcJHz@|z_3?s7VA`E)tPoTldcZVwt z??x!m$&HU`p#EH=bz-ia7&iv-=>^_qjQ;Ayu|qlQ;$zTYB&|I*A=bn8H~zB9R2Vu=|BzW>g|$>v zio9~>3*4&UcB|#ohoi)JGc$FUI2TfQvLJ#e-gh@rRRnW5;SCpF-hSMk#jsKg;V`wS zx_*_MqI61%^>h@>Z9z~1UpzE=4>->bMpThph*X`PM(`p@D=SS;ICaj3%0Z2cgtzV7sD z^rhVm_B9i>Mk1|)JEAGJ+L#)@iYAfI5~MU>F$}Xcqmr8pjOfvK#ERw+o7$!vVj&x1 z^s=^t^e)9r=r+DfRjTHku%ZI$i+&&2QG9OFQs-r=^vN!)2Fa$+EU*k?;d{d1vpM8( z+-^v;kSlCLVgFdn-*X=QXIgZ#K&(OW@W_32gcB3Y>tU04Gjcul%8$!WiO1uOCxJoQ z7^XlFhr@|GBN|=7JfJGJc;AbR^4u@)4HFm%^Z*}>(N7PvE0*suj@4wEV-&b#<2_*c z!ooF1Jin3lpwI$`HiB;h{hcXfGwnWac?0k+LxF~QXkAOG}YKn(nx z>|i@lgAuA_=L#lDRvuX_aT3K6YTED>#Bp=!y68YNZ_b4&Yr=5^ZS(xF(uuDI?i3~* za30&U9>pvzmQE+F|5tNn&^~eVbICS(FmZdsstBa21`D3qL1C0foDN{0&pi$qr>)7M za$)ou9k5BDeK|bPleLU0AhN^zcb@3q0l9MYeuk*aHU4AaI58YhhRp0IXY-|4sdCGqRzlXXpigH~`mCazV6 z(edKooh@WtS5Zb>(^bhO>be1M)9&{q+(yD}=oeLl+eq|B!RQYRaDsEUi{}>6-Q@Ai zmJ4bMbBhXAbrD!5rq+_DZ!Gk^Bm@IzhRM8}f3bPZeC8PHC6^G)>(iLI%1ooZN=y-+ zIQR7`0;0`tUA?1swjk!g!=ktkx^skc0WpIe4)<135w? zkAjgrJjac@FpUm7Hl9Z=@)o9f@+T=>bCOeN7obr8-Ps+>*FS;Tm5mlEc232>1$n2_ z0q{Wupm!u9r!+)Pc=`Wr?^>G^x3=srnE#;itvgAoj4TN-CU@d7Z97SK+>bHcaq{Vw z46;$TK#T;Y`7*zK_TJ~{1$rSQ5cpIj)iy>tM@Q$eA8W4_gv|-JHs&y${5_6FCs$D` z+uU`RsG$VV(8zO25f0(lkM_*7cUc(IWO}Gil-K6#ikK5Dmj@5r_+T@P z2Bqu`m?Oi;JM{1z*$Zn!bVkU=t%GO}{_q2tmM&6yz#2r~h;|3v0)N1b)J4G?$EC$P zu`m6eovzx-of@Y)+goBD!TI0yZ2Xi?<>noEbkgS(Cw<}(1E^g5%a~y zN;_ZrZ|}2(c0S~yQJK4@BfG38xj_Um7wr{1z(=x5=)md_rBIsi-keImQCh)~-s_XW zh|@8?Z%eI*&o!hqXkA82Ycv_gW;<&cURNZgL>eiFs$Q~`8>y^i^dFCZ)5^b^cNGoUjmiL znfgF&Rmm?9q;wlTgnQ3VIcb|N+c53)NpkdlEG0yeRU z)ABYmh%aCh{#C_u-Z5spx1^&e^Q0~ z;D;M7ODRu>PifON?Yg=mHNgJhW-Xc;t0XQ#k{4d($i$sy&qOZQaR`lPV*)lX?%tJi zxu7)_&*!o`)|QkNCvYJL%+w+<7i-;lEyOK5JcR_-;$TT#Zi%YJ3gIF6D&@bg?5u%3 z$bpe-{zY2fGaK`Rl{8@S_YXxK;g3ri2pB&dfBMGN&c^Eq49qIqzcUI(B?aNpGCP^l@VNATjT{i$kRoC6}Lfo;-@vC}c*C%Vw1o1h_pwZr=08)2WQ zoL~}si5r*h1`P^E9KnbazE}N#Re}-c0OW&fAosg7h#OK!W4L(bzQF^m&AdEos7~Oy z!)6gW02^~lEaC64^-ZKdjLAeV4?{STzu^t9A|tRvdFD*mAU?$id^oVBH--+fi>Dsk zq!b9D8@i{=e#wm_OulwQMYbC-un;1^HIaQbrYiN<21CnPec(*_wb1LU6t5WVRtjA4 zjzU{>{z{+i1%ec{bLrk3jK($`w$NY0n4L<$S-SgdFW?7NQva%-o^)HjI9HYP90EhJiWGo#!k($;M>F5lzb`=^CFoi zBRv?8?9pT?AjO(v9`Dna`&*_D$KGxDO=KY)wWe~B8{w!S=ai-i&M5(AT=_&uyp_T_rOMadMb_QXn%TYhllYBg~ftbCO}(z0c{SMC5h|JW$j6UfOVIM8!A_Mn9wgCnl`Qx1hL;8a&-CD)~x%FU^$bP3_2o>sq0&SdaqI?bLDaDnrUFbN0|zy{%?Cw*X03e5jL z9D6*)8zYSc2a>0Tl`e)=OyEk>E^;ee5!ygGKYp}KSwQc>9UXuP zmJK*aZO=??@3S!&O>E14UP`~QqWf)|o20gPZI5BOd1>>vpSNtyPHn8`F)#f-AM3D< zp$l5hQ`*DShJU4EWoY;l3nrt5hn?BB)#ub!e=``=g1M~su-`D}1~yXD*t+d+>GPKC zbJj9SS?UH&s%;y!QXBOMZ>ZHf*zIBQgTb(6qw~}@`!;2;`e1${lBJ~iG=EHO^v&Fb z8RfFcd<)yVJvIm1zR`L59KQ836x%j4&3K0kwo<^PpOx@XPI_w`=u4YV$OYoBbKAye z=}DGnT(tn7>^g8+Yb^^LeBIAoE z;$yH9^e_1$4w55B2GJ4}ef6d2J7&;a`CG97%jE#eMSyar;S2$8L5OW&Tc0tWTK3W~ z$`cLTADB)Mv)k7msP6 zJ1|=e*xZR-#9udj7IP`}h>OUhTjrBDLCOVY7FaierR)Gusr50mDng@fBwz|pc(wY3 zyF;Ni&(kre4>}(EJ#c!L?rgDy9Uuq#^tyM`%OhC&cP{)Xc-p$@$U5{PH}-V>njtul z1EXQ<<{3ZwOG2P#(1)!dQo~~zjCGZG)X2!CAW=VBL+RSKEaMrDJj9IpRA8Y#pGwyl z#r)$tvT{`gXw8^Uis5Ga=CCp#fKK`nUt-#jS=qy-z-@)W-C5z}9=@mqUwSz?=pg z9hh(11I6@otk$Q|()HTxxmYw|kGFl)-9lrlM#9w!ESA~QV42zyZDzFwrESVyRto@F zGX?-=e4pY^sBkr()Cvvu!S=)ZtUF#Tv+`tCL6pu#3`mD{yv#u^3z`GNJC5(IH_Wip zy7Mtc9wZ7nxs>_vY_>O8OeK|M}cpFr{ME$J& z>o~Yr zEay0sU^@FXj`k#Jp&Q;}LXDHU1ft_xFVy4J|{7DA=9 z>@J3wb+YDD~(Uj=iaVC*oZr(pT&lZh_%r{*_82`B3=tUeU$$+xfW_8lw`+*H+0 zCnLORI|B?JIKF%UEAI)ZCMHEWBY}(pVNK3JAj9rH$Q{>=xoEEi_5S!(8NXb3jpQq* zf4JAA^WM7}h9uQ)r`gR>POqU}0rAF{RZbu0XXS`K=Bcz_D{=45>@lli4TlhuE8SWB zeKdEOP^w=rwy3r9h87j7iEkZRXmRtJctutlkKoZYG(p5)=g?7!rHF78ewhSyTR0=V z8hfv7Z5P#z@neKFOE^gg+s7S@p=mc>Ou|0-rF^e9UiQKFdqUo*IU%K&n~%Nw*B$8E z`{>j-=(P8-DINi8#YcdSYIJJvI#)6}TM7a8qz}eoMzg6T6+m6K z>%QuzyWaI}RSqb+R&!E5m2Kx49`@%8@HxCtQnD|)>N=L`U4F8bWAHV0g^Zc<=5jce z;e7nQJV-@uc9eD=LbjHyHoF(QAY`+^A)1iqh*dj=J{XzLlfYg(MF(zSAVQK#KfZ!# z$h}FI0Wq&{Ki~D~>UVGZ*R058=zVnyrnQ{jXEB#jRkhqaYidKeXeix7^C^!Hu2LRp zl5kE-cK?)<%R6r)`S?gHzrLQHpvDo@IIFj=msFZp`hf47VUFN^Z=#lVj8bcB_AXzm z{~mH}bN7rdYhU<0qLN; zHiRhyn*uE+2g^FrkTTbCoI%fw9~Dj|A=!3hd_cSA>Zuve4wHC~lB{8m{E{22x&9aQ zm$9$;Ffn^#5j}KfS)}xyQMSdDXQG)uojNESO_0Mm8;mio@(ja%bBI}vt@dV{eR}O; zK_HZeKqv%!jW*HlSRs@oUqbx%mHi;Frub>FW|gNcjC^cB`DuO*lFO&|P}2jX z*U7P$1Pin9c9d`nfq*4NE`B6&+NkU~y=O)qL75{cbMns@L7DSfDRYR&#Ds5T(u?`F z5lrF5%7cW7`Piu8L=}WKn-khZ8*u`{8Kw~VXv`K^bL2f1E)Kl4|A4TG`CLO|8(Ku; zX5u$24KU}7o}xD^hNY70_|qE8X9lc@3!GyEc6M+>VJx2X0UkHVkHaj=8B2H(DW)~! z>D9Dd7OPb)n@-T&24*EDSJ?6>Y;+~wWPj8=m-qIg)Stn;L+n9$AR)&F?`jSqS85fqD3ya z$RD`jgK7DSnYvnjJ74ZUN5?1+H*uQSr*5Z)5mPBfC1^s(yw!e*sFaw%p-zDSgJULP~Q&sZv5GdV-(rl;~CAeER5f7tMZ!6r1a>_$0 zl!!kfUrN-@*WOGL?nm0_2=^m-Y=rxfHaf!n;Gb+%J3n4Z_x7VXam%cqM+@mHa0qso z3TvOYSKX)=^DjrQD)IGVes^@thVH3Io5gU@GU?$_Lx=fN}p^8X;E^B5pu&BX*o#O`}Dso%E4{PE<#a?^_aKA%iFr#uu zuwKjo+oHCq4-8&-cKK2=%rsZ&Q-b1O_O*HES7}90C3C$U5_4PV*1@0$_x8(48wB&g zN=7W}JrpLm8Z)`!$q1(pys$fOC;wUU4}eX|;BwPets0~}MDLzititFFT%5_7XIGu! zMh44|Ecbu2ZSm|MeEU90v2(Y$tze4_UbSG0tJ~c7I$ieUAN$j>mIQBV_vG@Psc61n z9ij&}b&^QmUJadFJeAuio5^g>n=rZ2{Db~5Iv^KJI==E~$R2U_3i7udlE1;`0JGkq zeF<)S2G56e|Nc$<3BJBt;r1d3=5i3sQE_N!@uit}u#BF_wU~Kgy+Py5@Q0CPlrDnQ zuDnyHij&Mc#cG^9su=~|)&k1;DC>xXj+pd(s;G6!wbNr~wqtLJ9si*hgxcV+B_f2J zG53VYaK1UrpkI{{x*0k|`YC3{OZ~t3gFtf_u z0Nv20R9n)$rka!_E@c-CCIe@vGFiUa%$N>)=GzN*eQbh>8OjHRne?Ouu{!zWSGgie z4|I)3<97-h+0$%6i+Viw*0|Sr;8EM2=Rcn`{4Qk@`bC~fun6vxMGyymLI$-Jp%f&_ zvgqb3hyw+2;BJWnb8gFYA?;1x_KQnmYMU&Z@x#m>Ke{t}V*DTtOrGUArB(A{n_&Gq z_BVKcjQozQMw@qmnGPc)X>#E3k<*6nnw)2f4GmY4HQq@2!Pt~%xpf?LZ5h7z9=QeI851}T zZwyO!;aD@uE1|-Ny^0Le4q*f$Yu=6xYpcmc+)b>7*avh2K} zDu-2Bc6t5r!{^%%pNHd$#Y^pUJ<(q&s17gs6U&R?>Cbp+wknLWzooYNJ6V%#<{?U2 zH>eWrRiXP@Czl_|W^zO8gNa|(7n3InrQ*j$6iOwHj3|`K8X-|Al`=L*TPU>w1z)#$ zzUK6Ri8Ds`({S$nC|EU~%_3;ZbA06me2~ASDE$WeEiVfCRwY|{WV}+`nx@i~?hVW( zOZ}N+7_(CeJcA)-^B&YUlJ@1HcK!}{F`BC6;N)v4vf5IzNck=mO=)zxs@mrFWS{2p zfqJW`{?J15vg?Vj|CHjUx=HHpK0eC>k+A?TI2)>DPry$df=_hK5*)ArsoFo8tcHi9 z8R;*E1fBq<_=8d;pK4wD@&C@-%1=Rheyo4BoghK%8UY^~1x~-Nlm!sjDUFDs zsJa%R0Kj24TS|?ip?gC9!|ldk%!B{<^mOW_L@j%17;!}aDcB`~?^_|HJD=+O_m$eH z;8f($#A(0AtgK#u)m#~aZ|N|tS4u7W6+H1SLAXk1EgwBX=;1y1l+tZu#z>_;l9yDOus3T( zUSP`(G@M`FJK@SaBHy<|O#Vr4>?NEy9A;d((6{ z{B1i`0(WH#`@;qidKLPE>vf6$u^Im35_;uL-ISDg%%h+B|MWGf`|fk?a^g+-Lb+(= z!~nOoi_Dz3sx}+VRcrp?d1(=<&d}Pv1|!3EX6Af+ zD#7v@j4)_31v7>@$#elm;J*A3B-+uW{t>6(X=sX)Yf0`Uy~>|rI6#s6lklO)1)75d zv>3bRc{4Y;r_xYb4fXu^$vst}EnayF`urq?d$F!bTY>(K9~XiCO&S@2{>_X-3G{FB z*c>hTH;3n#B$KfEIrI7q5(0CtR-BsMd4cwV@Cn=1PFC;?@sdIV-$6D=TjsLXOYYP@3;4#db0E>Lp_4yG$U-!iHZ{L ziaY5kN}#EoQ&J)eOZ^EtG=V05mfpSXU!O|XU+(Wt`O{=zp*!luc~w|w;d2U~bN%Bo zV9zBYmcdV!L!`u47?TDPuMA5^Eh8tS zF`fN<2RjHAy?mtBT%o^EOQ1AMqgSK9;3XGvlCXFbJi{gu3_`!*B*Tvw+5`72bT`UN zo@99+u~*d?UoO-a_N~4UeUK2uHvVazsF2XZ-LB(;*I>4_3^MLa`QV_S=Si{$xWUIu z9~>JbT?icPTHqi7-#_vkSHxO7_M<)X%uhxnXtFx$CxYR6Mbbo_hK4D=curXfUDmCo zYo=JKb*nKD8Vgw(3w6oF)J${0cAoW#>FUKr2Xj~iTzt<2 z&Ro*4!2|2~6Nw7Kr{i@{Kf;pj@zh$fRTKv7ax{MpwHXp?Ere`?kZssUK}f0>I@7-y z$OpWE;~Kf7#-$*;7FwX~btYjnVJ4}Hv;mOZ7ZX2Ri2l`F9?5f=nn=NmV{ z10!L|Z7Gmx%y9!OcA`=z#)uRQAh&_blrMe_N*bcXOO$xUyu%vGYJ}nrHBi+!Eu6s# zV#fsWxAXzqXL(NNl%Kpl3tg`48NM8YKz5uEkDqrjtFPn@()U4OzgVpR3_A{NisA#M zMOuX%N!;t*dtG52G)VRd;k@iaZ=_8s{x*kq`uMPpf>ip`2s}($Lwu$@#pS&|7#S8q zwC2Mn+n%KtGDc9J{yY8n^aMsr)?+%dAy2(#u0jyP@*cDRw6%TFU4ypT7Ob3+KAytn zFTDkyfCNU+^bb8W?igMT@-nvazw=1L*El#)n`bh&yyYG#NhpZv+EkAmEpC zzhiv{Hu|L*d@_IJ2&7*$m`C&QSSn`p$u!)nrxev@)=>n~SOt zLTetp{~X1Xxsa-17U2My6|mP?nD4Zf(Ubw+;~K7UC`@$weSn(}Mx4Q{j9G%84cNco zqadu@AB=3OW$KFd-x+JaDD3d6%Q7+@$PDKcfGLav+s43mg_6?Q=T0ser- zIApka(cXX$nbLVum~j}6cQcd6IH8hLZRRfJM9G+DL+xxtF??QAieW5M2^~5W%gG3I z?b^q+Ar;=VrZn~@ofFur1B@fiU55uFyij8b-uLKXy2r~cEa14CxUgH0#wOe7`Xd+$ z;4heNgDX$UU)||R4(mSt${Hg@1ru>)Z=}X$+T{Q!;cXB~jQUyo*Kss>q+Il;C1Ppz zOgRd(%tx72NPc!)r$Ma?{olsJF>(s5A2ZUT&X5P(?eW&rwfT`}MZ(pgOz|d{mBUH7 zBMQaC*hMPJreHzMCdm|xxL-Zo{VDgZCo6*&U=@?gj0C;z79-7)w zR&yR$?KDr)MMBf0)90a&}`isZgDk zVAYHop%F+;1pIEemN|K*fIeep`1_-(NbQ@OQ;DW~onrfuP`n?ok9=C54mvr17^5Wo zES%Srv?H@HE;PR;dLD$X^UI$nM625!wVjs)LTe~$Ln}kze3yaga4*VOkk$OQAno{m_%_vE#q1NeFZ`&|}KagEs~s(e@p9c(qs zNgbMYGbb_~nU1biKYg8l%p3X~>?MMX^B@g6tm3Sljnw(Rr4q@)7 z#bPmg@yx&z7fd2^;C+H$8ZxVre?<1(`p0a_g&5$gYN5tq^W76H_{I}C`y4gSttCGu z4oeR=EC&s$EMb%CXclV4iXc`{4bvPuBZ`P!HKANb-UZW(UY4VFJV5Fcs~s;8d^+rT zDiT2HQg|U!T&@q`X6xe>t5?sLJjz>PU0ME!=ZVOybk0_qmj_9g}!tn6pFBDaChR}D7AFapU1Gz z+5=|SGKdo5LcJz_ka5i9EuRWFf!eePx~B_bRNVurqDQW><~H4fJQyJ9{*dLMd~~ z*MS>`iNU?$?$1#Q$wHLQ~&Ey|`y!eh(XPJc7}Hzw-Ii@QRCdcbWn~ z@KFrrGl`T&+SeDbwoqUst*kO>04tIj@jA@MB-&v@TgcPVG`2!Ap{JFhB39mJDlFoZ z12k#{e?VD~Zo8AKv{99n3$0mtX=4ITBBf+;4HvOB8bWJpdBG5BL+LbB^}xUom*LG$ zl<0-NaWEx%rBv6c%1KP#SAYs?3n~z`d52e<7x-x9OJxYDi#6wO&6o}>Wo{w+?oz{( z*Fuwd&BrTxBZ1clUZ)VmNPUn4gMMtXBD{y(er-kW^y;A;2c`MJP16|N525W59y6is zvAKOAgf*%c)+io=-(-U?=a`5b5duZEJ6Vq&+qiS162dTGe-RTGtv zJ!x$SK@B0Ov3o&{BD-oZjke#RSMF6~P@N!v$go(WT^9(uDiC(Tk&fdqAtTj_px=Cr zmRzA^fnci}f-Q8_?F@_=mLz~pT_?cTz;L)Xpg+wFhaZN-#)tvmqXfonx(fjk?q)sS4hi^Xi?l1ozgfX{YIDkd~J?78i literal 0 HcmV?d00001 From bc1bf555076af7e3b7a15c0f292fa056d00b38d5 Mon Sep 17 00:00:00 2001 From: Serafeim Chatzopoulos Date: Thu, 7 Apr 2022 14:31:22 +0300 Subject: [PATCH 05/83] Add AbstractSplittedRecordPlugin --- .../dhp/collection/CollectorWorker.java | 2 +- .../file/AbstractSplittedRecordPlugin.java | 54 ++++++ .../plugin/file/FileGZipCollectorPlugin.java | 29 +++ .../fileGZip/FileGZipCollectorPlugin.java | 49 ----- .../collection/plugin/oai/OaiIterator.java | 2 +- .../collection/plugin/rest/RestIterator.java | 2 +- .../{ => plugin/utils}/JsonUtils.java | 2 +- .../collection/plugin/utils/XMLIterator.java | 170 ++++++++++++++++++ .../{ => plugin/utils}/XmlCleaner.java | 2 +- .../FileGZipCollectorPluginTest.java | 7 +- .../{fileGZip => file/gzip}/opendoar.xml.gz | Bin 11 files changed, 260 insertions(+), 59 deletions(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java delete mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java rename dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/{ => plugin/utils}/JsonUtils.java (98%) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java rename dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/{ => plugin/utils}/XmlCleaner.java (99%) rename dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/{fileGZip => file}/FileGZipCollectorPluginTest.java (87%) rename dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/{fileGZip => file/gzip}/opendoar.xml.gz (100%) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java index 03f592169..5de4eb84b 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java @@ -7,7 +7,7 @@ import java.io.IOException; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; -import eu.dnetlib.dhp.collection.plugin.fileGZip.FileGZipCollectorPlugin; +import eu.dnetlib.dhp.collection.plugin.file.FileGZipCollectorPlugin; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java new file mode 100644 index 000000000..c569926c0 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java @@ -0,0 +1,54 @@ +package eu.dnetlib.dhp.collection.plugin.file; + +import java.io.BufferedInputStream; +import java.util.Iterator; +import java.util.Optional; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.collection.plugin.CollectorPlugin; +import eu.dnetlib.dhp.collection.plugin.utils.XMLIterator; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class AbstractSplittedRecordPlugin implements CollectorPlugin { + + private static final Logger log = LoggerFactory.getLogger(AbstractSplittedRecordPlugin.class); + + public static final String SPLIT_ON_ELEMENT = "splitOnElement"; + + @Override + public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { + + final String baseUrl = Optional + .ofNullable(api.getBaseUrl()) + .orElseThrow( () -> new CollectorException("missing baseUrl, required by the AbstractSplittedRecordPlugin")); + + log.info("baseUrl: {}", baseUrl); + + final String splitOnElement = Optional + .ofNullable(api.getParams().get(SPLIT_ON_ELEMENT)) + .orElseThrow(() -> new CollectorException(String.format("missing parameter '%s', required by the AbstractSplittedRecordPlugin", SPLIT_ON_ELEMENT))); + + log.info("splitOnElement: {}", splitOnElement); + + final BufferedInputStream bis = getBufferedInputStream(baseUrl); + + Iterator xmlIterator = new XMLIterator(splitOnElement, bis); + + return StreamSupport.stream( + Spliterators.spliteratorUnknownSize(xmlIterator, Spliterator.ORDERED), + false + ); + } + + abstract protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorException; + +} \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java new file mode 100644 index 000000000..a4dd65d2a --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java @@ -0,0 +1,29 @@ +package eu.dnetlib.dhp.collection.plugin.file; + +import eu.dnetlib.dhp.common.collection.CollectorException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.zip.GZIPInputStream; + +public class FileGZipCollectorPlugin extends AbstractSplittedRecordPlugin { + + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); + + @Override + protected BufferedInputStream getBufferedInputStream(String baseUrl) throws CollectorException { + + log.info("baseUrl: {}", baseUrl); + + try { + GZIPInputStream stream = new GZIPInputStream(new FileInputStream(baseUrl)); + return new BufferedInputStream(stream); + } catch (Exception e) { + e.printStackTrace(); + throw new CollectorException(e); + } + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java deleted file mode 100644 index 38f328890..000000000 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPlugin.java +++ /dev/null @@ -1,49 +0,0 @@ -package eu.dnetlib.dhp.collection.plugin.fileGZip; - -import eu.dnetlib.dhp.collection.ApiDescriptor; -import eu.dnetlib.dhp.collection.plugin.CollectorPlugin; -import eu.dnetlib.dhp.common.aggregation.AggregatorReport; -import eu.dnetlib.dhp.common.collection.CollectorException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.*; -import java.net.URL; -import java.util.Optional; -import java.util.stream.Stream; -import java.util.zip.GZIPInputStream; - -public class FileGZipCollectorPlugin implements CollectorPlugin { - - private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); - - public static final String ENCODING = "encoding"; - - @Override - public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { - - final String baseUrl = Optional - .ofNullable(api.getBaseUrl()) - .orElseThrow( () -> new CollectorException("missing baseUrl, required by the fileGZip collector plugin")); - - log.info("fileGZip.baseUrl: {}", baseUrl); - - final String encoding = Optional - .ofNullable(api.getParams().get(ENCODING)) - .orElseThrow(() -> new CollectorException(String.format("missing parameter '%s', required by the fileGZip collector plugin", ENCODING))); - - log.info("fileGZip.encoding: {}", encoding); - - try { - - InputStream gzipStream = new GZIPInputStream(new FileInputStream(baseUrl)); - Reader decoder = new InputStreamReader(gzipStream, encoding); - BufferedReader reader = new BufferedReader(decoder); - - return reader.lines(); - - } catch (Exception e) { - throw new CollectorException(e); - } - } -} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/oai/OaiIterator.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/oai/OaiIterator.java index 566c6b216..28b2572fb 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/oai/OaiIterator.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/oai/OaiIterator.java @@ -19,7 +19,7 @@ import org.dom4j.io.XMLWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import eu.dnetlib.dhp.collection.XmlCleaner; +import eu.dnetlib.dhp.collection.plugin.utils.XmlCleaner; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; import eu.dnetlib.dhp.common.collection.CollectorException; import eu.dnetlib.dhp.common.collection.HttpConnector2; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/rest/RestIterator.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/rest/RestIterator.java index 64a041fd4..e4bad2f8d 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/rest/RestIterator.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/rest/RestIterator.java @@ -30,7 +30,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; -import eu.dnetlib.dhp.collection.JsonUtils; +import eu.dnetlib.dhp.collection.plugin.utils.JsonUtils; import eu.dnetlib.dhp.common.collection.CollectorException; import eu.dnetlib.dhp.common.collection.HttpClientParams; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/JsonUtils.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/JsonUtils.java similarity index 98% rename from dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/JsonUtils.java rename to dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/JsonUtils.java index da3768a4a..15401e223 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/JsonUtils.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/JsonUtils.java @@ -1,5 +1,5 @@ -package eu.dnetlib.dhp.collection; +package eu.dnetlib.dhp.collection.plugin.utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java new file mode 100644 index 000000000..853973ebb --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XMLIterator.java @@ -0,0 +1,170 @@ +package eu.dnetlib.dhp.collection.plugin.utils; + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringWriter; +import java.nio.charset.Charset; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CodingErrorAction; +import java.util.Iterator; + +import javax.xml.stream.XMLEventFactory; +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLEventWriter; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.events.StartElement; +import javax.xml.stream.events.XMLEvent; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class XMLIterator implements Iterator { + + private static final Log log = LogFactory.getLog(XMLIterator.class); + + private ThreadLocal inputFactory = new ThreadLocal() { + + @Override + protected XMLInputFactory initialValue() { + return XMLInputFactory.newInstance(); + } + }; + + private ThreadLocal outputFactory = new ThreadLocal() { + + @Override + protected XMLOutputFactory initialValue() { + return XMLOutputFactory.newInstance(); + } + }; + + private ThreadLocal eventFactory = new ThreadLocal() { + + @Override + protected XMLEventFactory initialValue() { + return XMLEventFactory.newInstance(); + } + }; + + public static final String UTF_8 = "UTF-8"; + + final XMLEventReader parser; + + private XMLEvent current = null; + + private String element; + + private InputStream inputStream; + + public XMLIterator(final String element, final InputStream inputStream) { + super(); + this.element = element; + this.inputStream = inputStream; + this.parser = getParser(); + try { + this.current = findElement(parser); + } catch (XMLStreamException e) { + log.warn("cannot init parser position. No element found: " + element); + current = null; + } + } + + @Override + public boolean hasNext() { + return current != null; + } + + @Override + public String next() { + String result = null; + try { + result = copy(parser); + current = findElement(parser); + return result; + } catch (XMLStreamException e) { + throw new RuntimeException(String.format("error copying xml, built so far: '%s'", result), e); + } + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + + @SuppressWarnings("finally") + private String copy(final XMLEventReader parser) throws XMLStreamException { + final StringWriter result = new StringWriter(); + try { + final XMLEventWriter writer = outputFactory.get().createXMLEventWriter(result); + final StartElement start = current.asStartElement(); + final StartElement newRecord = eventFactory.get().createStartElement(start.getName(), start.getAttributes(), start.getNamespaces()); + + // new root record + writer.add(newRecord); + + // copy the rest as it is + while (parser.hasNext()) { + final XMLEvent event = parser.nextEvent(); + + // TODO: replace with depth tracking instead of close tag tracking. + if (event.isEndElement() && event.asEndElement().getName().getLocalPart().equals(element)) { + writer.add(event); + break; + } + + writer.add(event); + } + writer.close(); + } finally { + return result.toString(); + } + } + + /** + * Looks for the next occurrence of the splitter element. + * + * @param parser + * @return + * @throws XMLStreamException + */ + private XMLEvent findElement(final XMLEventReader parser) throws XMLStreamException { + + /* + * if (current != null && element.equals(current.asStartElement().getName().getLocalPart())) { return current; } + */ + + XMLEvent peek = parser.peek(); + if (peek != null && peek.isStartElement()) { + String name = peek.asStartElement().getName().getLocalPart(); + if (element.equals(name)) { return peek; } + } + + while (parser.hasNext()) { + final XMLEvent event = parser.nextEvent(); + if (event != null && event.isStartElement()) { + String name = event.asStartElement().getName().getLocalPart(); + if (element.equals(name)) { return event; } + } + } + return null; + } + + private XMLEventReader getParser() { + try { + return inputFactory.get().createXMLEventReader(sanitize(inputStream)); + } catch (XMLStreamException e) { + throw new RuntimeException(e); + } + } + + private Reader sanitize(final InputStream in) { + final CharsetDecoder charsetDecoder = Charset.forName(UTF_8).newDecoder(); + charsetDecoder.onMalformedInput(CodingErrorAction.REPLACE); + charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE); + return new InputStreamReader(in, charsetDecoder); + } + +} \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/XmlCleaner.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XmlCleaner.java similarity index 99% rename from dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/XmlCleaner.java rename to dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XmlCleaner.java index c674031f6..95d1d2402 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/XmlCleaner.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/utils/XmlCleaner.java @@ -1,5 +1,5 @@ -package eu.dnetlib.dhp.collection; +package eu.dnetlib.dhp.collection.plugin.utils; import java.util.HashMap; import java.util.HashSet; diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java similarity index 87% rename from dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java rename to dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java index 793a5b04c..43f00928f 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/fileGZip/FileGZipCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java @@ -1,4 +1,4 @@ -package eu.dnetlib.dhp.collection.plugin.fileGZip; +package eu.dnetlib.dhp.collection.plugin.file; import eu.dnetlib.dhp.collection.ApiDescriptor; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; @@ -20,22 +20,19 @@ public class FileGZipCollectorPluginTest { private FileGZipCollectorPlugin plugin; private static final String SPLIT_ON_ELEMENT = "repository"; - private static final String ENCODING = "UTF-8"; @BeforeEach public void setUp() { final String gzipFile = this .getClass() - .getResource("/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz") + .getResource("/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz") .getFile(); - System.out.println(gzipFile); api.setBaseUrl(gzipFile); HashMap params = new HashMap<>(); params.put("splitOnElement", SPLIT_ON_ELEMENT); - params.put("encoding", ENCODING); api.setParams(params); diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz similarity index 100% rename from dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/fileGZip/opendoar.xml.gz rename to dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz From d0b84d32970d757bb49cac3b824b9969f7b39101 Mon Sep 17 00:00:00 2001 From: Serafeim Chatzopoulos Date: Thu, 7 Apr 2022 15:06:38 +0300 Subject: [PATCH 06/83] Add FileCollectorPlugin and respective test --- .../dhp/collection/CollectorWorker.java | 3 + .../collection/plugin/CollectorPlugin.java | 2 +- .../plugin/file/FileCollectorPlugin.java | 25 + .../plugin/file/FileGZipCollectorPlugin.java | 3 +- .../plugin/file/FileCollectorPluginTest.java | 53 + .../file/FileGZipCollectorPluginTest.java | 2 +- .../dhp/collection/plugin/file/opendoar.xml | 1079 +++++++++++++++++ .../plugin/file/{gzip => }/opendoar.xml.gz | Bin 8 files changed, 1163 insertions(+), 4 deletions(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java create mode 100644 dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml rename dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/{gzip => }/opendoar.xml.gz (100%) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java index 5de4eb84b..a770af804 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; +import eu.dnetlib.dhp.collection.plugin.file.FileCollectorPlugin; import eu.dnetlib.dhp.collection.plugin.file.FileGZipCollectorPlugin; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -115,6 +116,8 @@ public class CollectorWorker extends ReportingJob { return new OaiCollectorPlugin(clientParams); case rest_json2xml: return new RestCollectorPlugin(clientParams); + case file: + return new FileCollectorPlugin(); case fileGZip: return new FileGZipCollectorPlugin(); case other: diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java index 7d6aaaff8..08084e22a 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/CollectorPlugin.java @@ -10,7 +10,7 @@ import eu.dnetlib.dhp.common.collection.CollectorException; public interface CollectorPlugin { enum NAME { - oai, other, rest_json2xml, fileGZip; + oai, other, rest_json2xml, file, fileGZip; public enum OTHER_NAME { mdstore_mongodb_dump, mdstore_mongodb diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java new file mode 100644 index 000000000..3a268eabb --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java @@ -0,0 +1,25 @@ +package eu.dnetlib.dhp.collection.plugin.file; + +import eu.dnetlib.dhp.common.collection.CollectorException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; + +public class FileCollectorPlugin extends AbstractSplittedRecordPlugin { + + private static final Logger log = LoggerFactory.getLogger(FileCollectorPlugin.class); + + @Override + protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorException { + + log.info("baseUrl: {}", baseUrl); + + try { + return new BufferedInputStream(new FileInputStream(baseUrl)); + } catch (Exception e) { + throw new CollectorException("Error reading file " + baseUrl, e); + } + } +} \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java index a4dd65d2a..b2c77e8b6 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java @@ -22,8 +22,7 @@ public class FileGZipCollectorPlugin extends AbstractSplittedRecordPlugin { GZIPInputStream stream = new GZIPInputStream(new FileInputStream(baseUrl)); return new BufferedInputStream(stream); } catch (Exception e) { - e.printStackTrace(); - throw new CollectorException(e); + throw new CollectorException("Error reading file " + baseUrl, e); } } } diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java new file mode 100644 index 000000000..d9b5152fe --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java @@ -0,0 +1,53 @@ +package eu.dnetlib.dhp.collection.plugin.file; + +import eu.dnetlib.dhp.collection.ApiDescriptor; +import eu.dnetlib.dhp.common.aggregation.AggregatorReport; +import eu.dnetlib.dhp.common.collection.CollectorException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.stream.Stream; + +public class FileCollectorPluginTest { + + private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); + + private final ApiDescriptor api = new ApiDescriptor(); + private FileCollectorPlugin plugin; + + private static final String SPLIT_ON_ELEMENT = "repository"; + + @BeforeEach + public void setUp() { + + final String gzipFile = this + .getClass() + .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml") + .getFile(); + + api.setBaseUrl(gzipFile); + + HashMap params = new HashMap<>(); + params.put("splitOnElement", SPLIT_ON_ELEMENT); + + api.setParams(params); + + plugin = new FileCollectorPlugin(); + } + + @Test + void test() throws CollectorException { + + final Stream stream = plugin.collect(api, new AggregatorReport()); + + stream.limit(10).forEach(s -> { + Assertions.assertTrue(s.length() > 0); + log.info(s); + }); + } +} + diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java index 43f00928f..18caf1c45 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java @@ -26,7 +26,7 @@ public class FileGZipCollectorPluginTest { final String gzipFile = this .getClass() - .getResource("/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz") + .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz") .getFile(); api.setBaseUrl(gzipFile); diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml new file mode 100644 index 000000000..e5806a60e --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml @@ -0,0 +1,1079 @@ + + + Copyright 2012, University of Nottingham + OpenDOAR data is available for re-use under a Creative Commons Attribution-Non-Commercial-Share Alike licence + + + Architektur-Informatik + + Y + http://architektur-informatik.scix.net/ + http://architektur-informatik.scix.net/cgi-bin/works/OAI + + + + + Arbeitskreis Architekturinformatik + AK AI + Y + http://www.architektur-informatik.org/ + + + AT + Austria + + 46.783300 + 12.950000 + + + This is a German language repository on Computer Science. Full-text is not available for all items. + + 68 + 2008-05-15 + + Disciplinary + Operational + SciX + + + + Cin + Computers and IT + + + + + de + German + + + + Journal articles + Conference and workshop papers + Theses and dissertations + Unpublished reports and working papers + + + + Content + Content policies not stated + + No policy registered in OpenDOAR. + + + + Metadata + Metadata policies not stated + + No policy registered in OpenDOAR. + + + + Data + Full data item policies unknown + + No policy registered in OpenDOAR. + + + + Submission + Submission policies not stated + + No policy registered in OpenDOAR. + + + + Preserve + Preservation policies not stated + + No policy registered in OpenDOAR. + + + + + + Bob Martens + Administrator + b.martens@tuwien.ac.at + + + + + OAI Administrator + architektur-informatik@scix.net + + + + + + Dokumentenserver des LBI-HTA + + Y + http://eprints.hta.lbg.ac.at/ + http://eprints.hta.lbg.ac.at/cgi/oai2 + + + + + Ludwig Boltzmann Institut für Health Technology Assessment + LBI-HTA + Y + http://hta.lbg.ac.at/ + + + AT + Austria + + 48.209200 + 16.372800 + + + This site provides access to the institutions outputs. Users may set up Atom and RSS feeds to be alerted to new content. The interface is available in English and German. Many items are not available as full-text. + Special items include: Newsletters and Decision Support Document + 600 + 2010-02-04 + + Institutional + Operational + EPrints + 3.0.3 + + + Ce + Health and Medicine + + + + + en + English + + + + Journal articles + Conference and workshop papers + Unpublished reports and working papers + Books, chapters and sections + Other special item types + + + + Content + Content policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Metadata + Metadata re-use policy explicitly undefined + + No policy registered in OpenDOAR. + + + + Data + Full data item policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Submission + Submission policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Preserve + Preservation policies explicitly undefined + + No policy registered in OpenDOAR. + + + + + + + Elektronisch archivierte Theorie - Sammelpunkt + + Y + http://sammelpunkt.philo.at:8080/ + http://sammelpunkt.philo.at:8080/cgi/oai2 + Institut für Philosophie + + Y + + Universität Wien + + Y + http://www.univie.ac.at/ + Fakultät für Philosopohie und Bildungswissenschaft, Universitätsstraße 7, A-1010 Wien + + AT + Austria + + 48.209190 + 16.372740 + + + This is a subject based institutional repository hosted by the Institute for Philosophy of the University of Vienna. The interface is primarily available in German only, as are virtually all the papers. However the search form is in English and there are plans to make it available in other European languages. + + 1293 + 2010-02-09 + + Institutional + Operational + EPrints + 3.1.3 + + + Cop + Philosophy and Religion + + + + + de + German + + + + Theses and dissertations + Books, chapters and sections + Other special item types + Journal articles + Unpublished reports and working papers + + + + Content + Content policies defined + + This is an institutional or departmental repository. + The repository holds all types of materials. + + + + Metadata + Metadata re-use permitted for not-for-profit purposes + + Anyone may access the metadata free of charge. + The metadata may be re-used in any medium without prior permission for not-for-profit purposes provided: + + the OAI Identifier or a link to the original metadata record are given + the repository is mentioned + + + The metadata must not be re-used in any medium for commercial purposes without formal permission. + + + + Data + Full data item policies explicitly undefined + + Anyone may access full items free of charge. + No full-item re-use policy defined. Assume no rights at all have been granted. + + + + Submission + Submission policies defined + + Items may only be deposited by accredited members of the institution + Authors may only submit their own work for archiving. + The administrator only vets items for relevance to the scope of the repository + The validity and authenticity of the content of submissions is not checked. + No embargo policy defined. + Any copyright violations are entirely the responsibility of the authors/depositors. + If the repository receives proof of copyright violation, the relevant item will be removed immediately. + + + + Preserve + Preservation policies not stated + + No preservation policy defined. + + + + + + H Hracovec + Site Administrator + hrachov@philo.at + + + + + + Elektronische Publikationen der Wirtschaftsuniversität Wien + Epub WU + Y + http://epub.wu.ac.at/ + http://epub.wu.ac.at/cgi/oai2 + Universtätsbibliothek (University Library) + + Y + http://www.wu.ac.at/library + Wirtschaftsuniversität Wien (Vienna University of Economics) + WU + Y + http://www.wu.ac.at/ + Augasse 2-6, A-Wien + + AT + Austria + + 48.230000 + 16.357000 + 0131-3364990 + + This is the institutional repository of the WU Vienna University of Economics and Business. It provides access to the research output of the institution. Documents are available in full text. The interface is accessable in English. + + 1216 + 2012-02-28 + + Institutional + Operational + EPrints + 3 + + + Cub + Business and Economics + + + + + de + German + + + + Conference and workshop papers + Theses and dissertations + Unpublished reports and working papers + + + + Content + Content policies defined + + This is an institutional or departmental repository. + The repository holds all types of materials. + Deposited items may include: + + working drafts + submitted versions (as sent to journals for peer-review) + accepted versions (author's final peer-reviewed drafts) + published versions (publisher-created files) + + + Items are individually tagged with: + + their version type and date. + their peer-review status. + their publication status. + + + For more information, please see webpage: http://epub.wu.ac.at/policies.html + + + + Metadata + Metadata re-use permitted for not-for-profit purposes + + Anyone may access the metadata free of charge. + The metadata may be re-used in any medium without prior permission for not-for-profit purposes provided the OAI Identifier or a link to the original metadata record are given. + The metadata must not be re-used in any medium for commercial purposes without formal permission. + For more information, please see webpage: http://epub.wu.ac.at/policies.html + + + + Data + Rights vary for the re-use of full data items + + Anyone may access full items free of charge. + Copies of full items generally can be: + + reproduced, and displayed or performed in any format or medium + for personal research or study, educational, or not-for-profit purposes without prior permission or charge. + + provided: + + the authors, title and full bibliographic details are given + a hyperlink and/or URL are given for the original metadata page + the content is not changed in any way + + + Full items must not be sold commercially in any format or medium without formal permission of the copyright holders. + Some full items are individually tagged with different rights permissions and conditions. + For more information see webpage: http://epub.wu.ac.at/policies.html. + + + + Submission + Submission policies defined + + Items may only be deposited by accredited members of the organisation, or their delegated agents. + Authors may only submit their own work for archiving. + The administrator only vets items for the eligibility of authors/depositors, relevance to the scope of the repository, valid layout & format, and the exclusion of spam + The validity and authenticity of the content of submissions is the sole responsibility of the depositor. + No embargo policy defined. + Any copyright violations are entirely the responsibility of the authors/depositors. + If the repository receives proof of copyright violation, the relevant item will be removed immediately. + For more information see webpage: http://epub.wu.ac.at/policies.html + + + + Preserve + Preservation policies defined + + Items will be retained indefinitely. + The repository will try to ensure continued readability and accessibility. + The repository regularly backs up its files according to current best practice. + The original bit stream is retained for all items, in addition to any upgraded formats. + Items may be removed at the request of the author/copyright holder, but this is strongly discouraged. + Withdrawn items are not deleted per se, but are removed from public view. + Withdrawn items' identifiers/URLs are retained indefinitely. + URLs will continue to point to 'tombstone' citations, to avoid broken links and to retain item histories. + Changes to deposited items are not permitted. + Errata and corrigenda lists may be included with the original record if required. + If necessary, an updated version may be deposited. + + The item's persistent URL will always link to the latest version. + There will be links between earlier and later versions, with the most recent version clearly identified. + + + In the event of the repository being closed down, the database will be transferred to another appropriate archive. + For more information see webpage: http://epub.wu.ac.at/policies.html + + + + + + Gertraud Novotny + Administrator + gertraud.novotny@wu.ac.at + + + + + OAI Administrator + epub@wu.ac.at + + + + + + Elektronisches Publikationsportal der Österreichischen Akademie der Wissenschaften + epub.oeaw + Y + http://epub.oeaw.ac.at/ + http://epub.oeaw.ac.at/oai + + + + + Austrian Academy of Sciences + + Y + http://www.oeaw.ac.at/ + Postgasse 7, A-1010 Wien + + AT + Austria + + 48.250000 + 16.350000 + + + This site is a repository providing access to the publication output of the organisation. However only a very small proportion of material is available via Open Access as this site is mainly concerned with subscription-only access to its eBook and printed publications. As such that material which is offered freely is intended to induce a purchasing activity from the reader. The main site interface is available in English or German, however the supporting information and help is in the latter only. Users may set up RSS feeds to be alerted to new content. + Partners: Verlag der Österreichischen Akademie der Wissenschaften + + 2012-02-27 + 2006 + Institutional + Operational + Hyperwave + + + + C + Multidisciplinary + + + + + de + German + + + en + English + + + + Books, chapters and sections + + + + Content + Content policies explicitly undefined + + This is an institutional or departmental repository. + No content policy defined. + + + + Metadata + Metadata re-use policy explicitly undefined + + Anyone may access the metadata free of charge. + No metadata re-use policy defined. Assume no rights at all have been granted. + + + + Data + Full data item policies explicitly undefined + + Anyone may access full items free of charge. + No full-item re-use policy defined. Assume no rights at all have been granted. + + + + Submission + Submission policies explicitly undefined + + No submission policy defined. + + + + Preserve + Preservation policies not stated + + No preservation policy defined. + + + + + + Herwig Stöger + Administrator + herwig.stoeger@oeaw.ac.at + + + + + + European Research Papers Archive + ERPA + Y + http://eiop.or.at/erpa/ + http://eiop.or.at/cgi-bin/oaiserv.pl + + + + + European Communities Studies Association Austria + ECSA Austria + Y + http://www2.wu-wien.ac.at/ecsa/ + Institut für Technikfolgen-Abschätzung, Österreichische Akademie der Wissenschaften, Strohgasse 45/5, A-1030 Wien + + AT + Austria + + 48.230100 + 16.359200 + +43 1 51581 6583 + +43 1 710 98 83 + This site is an aggregating repository that contains a collection of research papers from ten European institutions. The site contains working papers on European Integration. The site interface is in English but several papers are written in French and German. + + 1098 + 2007-07-17 + + Aggregating + Operational + + + + + Cog + Geography and Regional Studies + + + Cub + Business and Economics + + + Cup + Law and Politics + + + + + en + English + + + fr + French + + + de + German + + + + Journal articles + Unpublished reports and working papers + + + + Content + Content policies defined + + This is a multi-institution subject-based repository. + Subject Specialities: + + Multidisciplinary + History and Archaeology + Social Sciences General + Business and Economics + Law and Politics + + + The repository is restricted to: + + Journal articles + Conference and workshop papers + Unpublished reports and working papers + + + Deposited items may include: + + submitted versions (as sent to journals for peer-review) + accepted versions (author's final peer-reviewed drafts) + published versions (publisher-created files) + + + Principal Languages: English; German + For more information, please see webpage: http://eiop.or.at/erpa/erpainfo.htm + + + + Metadata + Metadata re-use permitted for not-for-profit purposes + + Anyone may access the metadata free of charge. + The metadata may be re-used in any medium without prior permission for not-for-profit purposes provided: + + the OAI Identifier or a link to the original metadata record are given + the repository is mentioned + + + + + + Data + Re-use of full data items permitted for not-for-profit purposes + + Anyone may access full items free of charge. + Copies of full items generally can be: + + displayed or performed + for personal research or study purposes without prior permission or charge. + + + This repository is not the publisher; it is merely the online archive. + + + + Submission + Submission policies defined + + Items may only be deposited by accredited members of the institution, or their delegated agents. + Eligible depositors must deposit bibliographic metadata for all their publications. + Eligible depositors must deposit full texts of all their publications. + No moderation policy defined. Assume nothing has been vetted. + The validity and authenticity of the content of submissions is the sole responsibility of the depositor. + No embargo policy defined. + Any copyright violations are entirely the responsibility of the authors/depositors. + For more information see webpage: http://eiop.or.at/erpa/policy.htm + + + + Preserve + Preservation policies unclearly stated + + No retention period defined. + The repository will try to ensure continued readability and accessibility. + No file preservation policy defined. + No withdrawal policy defined. + Withdrawn items are deleted entirely from the database. + Withdrawn items' identifiers/URLs are not retained. + In the event of the repository being closed down, the database will be transferred to another appropriate archive. + + + + + + Michael Nentwich + Site Administrator + mnent@oeaw.ac.at + + + + + + OTHES + + Y + http://othes.univie.ac.at/ + https://othes.univie.ac.at/secure/cgi/oai2 + + + + + Universität Wien + + Y + http://www.univie.ac.at/ + Fakultät für Philosopohie und Bildungswissenschaft, Universitätsstraße 7, A-1010 Wien + + AT + Austria + + 48.209190 + 16.372740 + + + This is an institutional repository for the University of Vienna providing access to the thesis and dissertation output of the university. Users may set up Atom and RSS feeds to be alerted to new content. + + 8066 + 2010-04-16 + + Institutional + Operational + EPrints + 3.0.1-beta-2 + + + C + Multidisciplinary + + + + + de + German + + + + Theses and dissertations + + + + Content + Content policies explicitly undefined + + This is an institutional or departmental repository. + No content policy defined. + + + + Metadata + Metadata re-use policy explicitly undefined + + Anyone may access the metadata free of charge. + No metadata re-use policy defined. Assume no rights at all have been granted. + + + + Data + Full data item policies explicitly undefined + + Anyone may access full items free of charge. + No full-item re-use policy defined. Assume no rights at all have been granted. + + + + Submission + Submission policies explicitly undefined + + No submission policy defined. + + + + Preserve + Preservation policies explicitly undefined + + No preservation policy defined. + + + + + + Adelheid Mayer + Administrator + adelheid.mayer@univie.ac.at + + + + + + thesis-help.ub@univie.ac.at + + + + + + Permanent Hosting, Archiving and Indexing of Digital Resources and Assets + Phaidra + N + https://phaidra.univie.ac.at/ + + + + + + Universität Wien + + Y + http://www.univie.ac.at/ + Fakultät für Philosopohie und Bildungswissenschaft, Universitätsstraße 7, A-1010 Wien + + AT + Austria + + 48.209190 + 16.372740 + + + This site provides access to the digitised copies of the institutions collection as well as teaching material. The interface is in German. + + + 2010-02-17 + + Institutional + Operational + Fedora + + + + C + Multidisciplinary + + + + + de + German + + + + Books, chapters and sections + Learning Objects + Multimedia and audio-visual materials + + + + Content + Content policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Metadata + Metadata re-use policy explicitly undefined + + No policy registered in OpenDOAR. + + + + Data + Full data item policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Submission + Submission policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Preserve + Preservation policies explicitly undefined + + No policy registered in OpenDOAR. + + + + + + Paolo Budroni + Administrator + paolo.budroni@univie.ac.at + + + + + + textfeld + + Y + http://www.textfeld.ac.at/ + + + + + + textfeld society for advancement of academic potential + + Y + http://textfeld.ac.at/ + Wien + + AT + Austria + + 48.239300 + 16.369600 + + + This site provides access to publications by students and young scholars of all fields. Interface is in German. + + 514 + 2012-02-13 + + Aggregating + Operational + + + + + C + Multidisciplinary + + + + + de + German + + + + Journal articles + Theses and dissertations + + + + Content + Content policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Metadata + Metadata re-use policy explicitly undefined + + No policy registered in OpenDOAR. + + + + Data + Full data item policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Submission + Submission policies explicitly undefined + + No policy registered in OpenDOAR. + + + + Preserve + Preservation policies explicitly undefined + + No policy registered in OpenDOAR. + + + + + + + Repository of Belarusian National Technical University (BNTU) + + Y + http://rep.bntu.by/ + + + + + + Belarusian National Technical University + + Y + http://www.bntu.by/ + + + BY + Belarus + + 53.922100 + 27.590700 + + + This site provides access to the research output of the institution. The interface is available in Russian and English. Users may set up RSS feeds to be alerted to new content. + + 286 + 2012-01-26 + + Institutional + Operational + DSpace + + + + C + Multidisciplinary + + + + + en + English + + + ru + Russian + + + + Journal articles + Books, chapters and sections + Learning Objects + + + + + Alexey Skalaban + Administrator + skalaban@gmail.com + + + + + + \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz similarity index 100% rename from dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/gzip/opendoar.xml.gz rename to dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz From 48b580b45cc2e36ca08d73e2b111ffed019dfce1 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 11 Apr 2022 08:52:12 +0200 Subject: [PATCH 07/83] [graph enrichment] fixed country_propagation oozie workflow definition, parameter saveGraph is not needed anymore by the SparkCountryPropagationJob --- .../eu/dnetlib/dhp/countrypropagation/oozie_app/workflow.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/countrypropagation/oozie_app/workflow.xml b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/countrypropagation/oozie_app/workflow.xml index 202c86a6d..271ccbf72 100644 --- a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/countrypropagation/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/countrypropagation/oozie_app/workflow.xml @@ -274,7 +274,6 @@ --sourcePath${sourcePath}/publication --preparedInfoPath${workingDir}/publication - --saveGraph${saveGraph} --resultTableNameeu.dnetlib.dhp.schema.oaf.Publication --outputPath${outputPath}/publication @@ -304,7 +303,6 @@ --sourcePath${sourcePath}/dataset --preparedInfoPath${workingDir}/dataset - --saveGraph${saveGraph} --resultTableNameeu.dnetlib.dhp.schema.oaf.Dataset --outputPath${outputPath}/dataset @@ -334,7 +332,6 @@ --sourcePath${sourcePath}/otherresearchproduct --preparedInfoPath${workingDir}/otherresearchproduct - --saveGraph${saveGraph} --resultTableNameeu.dnetlib.dhp.schema.oaf.OtherResearchProduct --outputPath${outputPath}/otherresearchproduct @@ -364,7 +361,6 @@ --sourcePath${sourcePath}/software --preparedInfoPath${workingDir}/software - --saveGraph${saveGraph} --resultTableNameeu.dnetlib.dhp.schema.oaf.Software --outputPath${outputPath}/software From 73c172926a03447119b2fa4dccdd9765e736b2a5 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 12 Apr 2022 10:25:42 +0200 Subject: [PATCH 08/83] [Doiboost] fixed fundingReference extraction from the Crossref records --- .../doiboost/crossref/Crossref2Oaf.scala | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala index 0cb08ea94..b4d6d67e2 100644 --- a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala +++ b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala @@ -446,16 +446,12 @@ case object Crossref2Oaf { case "10.13039/501100000781" => generateSimpleRelationFromAward(funder, "corda_______", extractECAward) generateSimpleRelationFromAward(funder, "corda__h2020", extractECAward) - case "10.13039/100000001" => - generateSimpleRelationFromAward(funder, "nsf_________", a => a) - case "10.13039/501100001665" => - generateSimpleRelationFromAward(funder, "anr_________", a => a) - case "10.13039/501100002341" => - generateSimpleRelationFromAward(funder, "aka_________", a => a) + case "10.13039/100000001" => generateSimpleRelationFromAward(funder, "nsf_________", a => a) + case "10.13039/501100001665" => generateSimpleRelationFromAward(funder, "anr_________", a => a) + case "10.13039/501100002341" => generateSimpleRelationFromAward(funder, "aka_________", a => a) case "10.13039/501100001602" => - generateSimpleRelationFromAward(funder, "aka_________", a => a.replace("SFI", "")) - case "10.13039/501100000923" => - generateSimpleRelationFromAward(funder, "arc_________", a => a) + generateSimpleRelationFromAward(funder, "sfi_________", a => a.replace("SFI", "")) + case "10.13039/501100000923" => generateSimpleRelationFromAward(funder, "arc_________", a => a) case "10.13039/501100000038" => val targetId = getProjectId("nserc_______", "1e5e62235d094afd01cd56e65112fc63") queue += generateRelation(sourceId, targetId, ModelConstants.IS_PRODUCED_BY) @@ -468,14 +464,10 @@ case object Crossref2Oaf { val targetId = getProjectId("cihr________", "1e5e62235d094afd01cd56e65112fc63") queue += generateRelation(sourceId, targetId, ModelConstants.IS_PRODUCED_BY) queue += generateRelation(targetId, sourceId, ModelConstants.PRODUCES) - case "10.13039/501100002848" => - generateSimpleRelationFromAward(funder, "conicytf____", a => a) - case "10.13039/501100003448" => - generateSimpleRelationFromAward(funder, "gsrt________", extractECAward) - case "10.13039/501100010198" => - generateSimpleRelationFromAward(funder, "sgov________", a => a) - case "10.13039/501100004564" => - generateSimpleRelationFromAward(funder, "mestd_______", extractECAward) + case "10.13039/501100002848" => generateSimpleRelationFromAward(funder, "conicytf____", a => a) + case "10.13039/501100003448" => generateSimpleRelationFromAward(funder, "gsrt________", extractECAward) + case "10.13039/501100010198" => generateSimpleRelationFromAward(funder, "sgov________", a => a) + case "10.13039/501100004564" => generateSimpleRelationFromAward(funder, "mestd_______", extractECAward) case "10.13039/501100003407" => generateSimpleRelationFromAward(funder, "miur________", a => a) val targetId = getProjectId("miur________", "1e5e62235d094afd01cd56e65112fc63") @@ -487,15 +479,11 @@ case object Crossref2Oaf { "irb_hr______", a => a.replaceAll("Project No.", "").replaceAll("HRZZ-", "") ) - case "10.13039/501100006769" => - generateSimpleRelationFromAward(funder, "rsf_________", a => a) - case "10.13039/501100001711" => - generateSimpleRelationFromAward(funder, "snsf________", snsfRule) - case "10.13039/501100004410" => - generateSimpleRelationFromAward(funder, "tubitakf____", a => a) - case "10.10.13039/100004440" => - generateSimpleRelationFromAward(funder, "wt__________", a => a) + case "10.13039/501100006769" => generateSimpleRelationFromAward(funder, "rsf_________", a => a) + case "10.13039/501100001711" => generateSimpleRelationFromAward(funder, "snsf________", snsfRule) + case "10.13039/501100004410" => generateSimpleRelationFromAward(funder, "tubitakf____", a => a) case "10.13039/100004440" => + generateSimpleRelationFromAward(funder, "wt__________", a => a) val targetId = getProjectId("wt__________", "1e5e62235d094afd01cd56e65112fc63") queue += generateRelation(sourceId, targetId, ModelConstants.IS_PRODUCED_BY) queue += generateRelation(targetId, sourceId, ModelConstants.PRODUCES) @@ -516,6 +504,7 @@ case object Crossref2Oaf { case "CONICYT, Programa de Formación de Capital Humano Avanzado" => generateSimpleRelationFromAward(funder, "conicytf____", extractECAward) case "Wellcome Trust Masters Fellowship" => + generateSimpleRelationFromAward(funder, "wt__________", a => a) val targetId = getProjectId("wt__________", "1e5e62235d094afd01cd56e65112fc63") queue += generateRelation(sourceId, targetId, ModelConstants.IS_PRODUCED_BY) queue += generateRelation(targetId, sourceId, ModelConstants.PRODUCES) From 4314db55c8bf94150cabe07d7b2342fc18ec1001 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Tue, 19 Apr 2022 15:05:02 +0200 Subject: [PATCH 09/83] migration to services: update sql queries --- ...eryDatasourceOrganization.sql => queryServiceOrganization.sql} | 0 .../dhp/oa/graph/sql/{queryDatasources.sql => queryServices.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/{queryDatasourceOrganization.sql => queryServiceOrganization.sql} (100%) rename dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/{queryDatasources.sql => queryServices.sql} (100%) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryDatasourceOrganization.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql similarity index 100% rename from dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryDatasourceOrganization.sql rename to dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryDatasources.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql similarity index 100% rename from dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryDatasources.sql rename to dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql From c96a8613f8152311480aec93b65a627d4f6421f3 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 20 Apr 2022 12:07:49 +0200 Subject: [PATCH 10/83] update SQL queries --- .../dhp/oa/graph/sql/queryOrganizations.sql | 2 +- .../oa/graph/sql/queryProjectOrganization.sql | 2 +- .../dhp/oa/graph/sql/queryProjects.sql | 2 +- .../oa/graph/sql/queryProjects_production.sql | 2 +- .../oa/graph/sql/queryServiceOrganization.sql | 8 +-- .../dhp/oa/graph/sql/queryServices.sql | 57 +++++++++++-------- 6 files changed, 40 insertions(+), 33 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryOrganizations.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryOrganizations.sql index 11a8c50af..3451333c0 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryOrganizations.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryOrganizations.sql @@ -27,7 +27,7 @@ SELECT 'sysimport:crosswalk:entityregistry@@@dnet:provenance_actions' AS provenanceaction, array_remove(array_agg(DISTINCT i.pid || '###' || i.issuertype || '@@@' || i.issuertype), NULL) AS pid FROM dsm_organizations o - LEFT OUTER JOIN dsm_datasources d ON (d.id = o.collectedfrom) + LEFT OUTER JOIN dsm_services d ON (d.id = o.collectedfrom) LEFT OUTER JOIN dsm_organizationpids p ON (p.organization = o.id) LEFT OUTER JOIN dsm_identities i ON (i.pid = p.pid) GROUP BY diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjectOrganization.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjectOrganization.sql index bcdef8221..d9a77427d 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjectOrganization.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjectOrganization.sql @@ -16,4 +16,4 @@ SELECT FROM project_organization po LEFT OUTER JOIN projects p ON (p.id = po.project) - LEFT OUTER JOIN dsm_datasources dc ON (dc.id = p.collectedfrom); \ No newline at end of file + LEFT OUTER JOIN dsm_services dc ON (dc.id = p.collectedfrom); \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects.sql index db0da83f7..af5913e75 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects.sql @@ -42,7 +42,7 @@ SELECT LEFT OUTER JOIN projectpids pp ON (pp.project = p.id) LEFT OUTER JOIN dsm_identities i ON (i.pid = pp.pid) - LEFT OUTER JOIN dsm_datasources dc ON (dc.id = p.collectedfrom) + LEFT OUTER JOIN dsm_services dc ON (dc.id = p.collectedfrom) LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id) LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects_production.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects_production.sql index 234bb7c3e..80cbda4b7 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects_production.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryProjects_production.sql @@ -40,7 +40,7 @@ SELECT LEFT OUTER JOIN projectpids pp ON (pp.project = p.id) LEFT OUTER JOIN dsm_identities i ON (i.pid = pp.pid) - LEFT OUTER JOIN dsm_datasources dc ON (dc.id = p.collectedfrom) + LEFT OUTER JOIN dsm_services dc ON (dc.id = p.collectedfrom) LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id) LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql index f72e72105..02bed4b65 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServiceOrganization.sql @@ -1,5 +1,5 @@ SELECT - dor.datasource AS datasource, + dor.service AS service, dor.organization AS organization, NULL AS startdate, NULL AS enddate, @@ -11,6 +11,6 @@ SELECT dc.officialname AS collectedfromname, 'providedBy@@@dnet:datasources_organizations_typologies' AS semantics, d.provenanceaction || '@@@dnet:provenanceActions' AS provenanceaction -FROM dsm_datasource_organization dor - LEFT OUTER JOIN dsm_datasources d ON (dor.datasource = d.id) - LEFT OUTER JOIN dsm_datasources dc ON (dc.id = d.collectedfrom); \ No newline at end of file +FROM dsm_service_organization dor + LEFT OUTER JOIN dsm_services d ON (dor.service = d.id) + LEFT OUTER JOIN dsm_services dc ON (dc.id = d.collectedfrom); \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index 2623c65c4..81be79420 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -57,8 +57,12 @@ SELECT NULL AS odpolicies, ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.languages, ',')) AS s) AS odlanguages, - ARRAY(SELECT trim(s) - FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s) AS odcontenttypes, + + -- Term provided only by OpenDOAR: + -- probably updating the TR it could be replaced by research_entity_types[] + -- But a study on the vocabulary terms is needed + -- REMOVED: ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s) AS odcontenttypes, + false AS inferred, false AS deletedbyinference, 0.9 AS trust, @@ -69,22 +73,25 @@ SELECT d.releasestartdate AS releasestartdate, d.releaseenddate AS releaseenddate, d.missionstatementurl AS missionstatementurl, - d.dataprovider AS dataprovider, - d.serviceprovider AS serviceprovider, + -- the following 2 fields (provided by re3data) have been replaced by research_entity_types[] + -- VALUE 'Research Data' : d.dataprovider AS dataprovider, + -- VALUE 'Services' : d.serviceprovider AS serviceprovider, d.databaseaccesstype AS databaseaccesstype, d.datauploadtype AS datauploadtype, d.databaseaccessrestriction AS databaseaccessrestriction, d.datauploadrestriction AS datauploadrestriction, - d.versioning AS versioning, + -- REPLACED BY version_control : d.versioning AS versioning, + d.version_control AS versioning, d.citationguidelineurl AS citationguidelineurl, - d.qualitymanagementkind AS qualitymanagementkind, + -- REMOVED (it was provided only by re3data: yes, no, unknown): d.qualitymanagementkind AS qualitymanagementkind, d.pidsystems AS pidsystems, d.certificates AS certificates, ARRAY[]::text[] AS policies, dc.id AS collectedfromid, dc.officialname AS collectedfromname, - d.typology||'@@@dnet:datasource_typologies' AS datasourcetype, - d.typology||'@@@dnet:datasource_typologies_ui' AS datasourcetypeui, + d._typology_to_remove_||'@@@dnet:datasource_typologies' AS datasourcetype, + d.eosc_type||'@@@dnet:eosc_types' AS eosc_type, + d.eosc_datasource_type||'@@@dnet:eosc_datasource_types' AS eosc_datasoorce_type, 'sysimport:crosswalk:entityregistry@@@dnet:provenance_actions' AS provenanceaction, d.issn AS issnPrinted, d.eissn AS issnOnline, @@ -92,16 +99,15 @@ SELECT d.consenttermsofuse AS consenttermsofuse, d.fulltextdownload AS fulltextdownload, d.consenttermsofusedate AS consenttermsofusedate, - de.jurisdiction||'@@@eosc:jurisdictions' AS jurisdiction, - de.thematic AS thematic, - de.knowledge_graph AS knowledgegraph, - array(select unnest(de.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies + d.jurisdiction||'@@@eosc:jurisdictions' AS jurisdiction, + d.thematic AS thematic, + -- REMOVED ???: d.knowledge_graph AS knowledgegraph, + array(select unnest(d.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies -FROM dsm_datasources d -LEFT OUTER JOIN dsm_datasources_eosc de on (d.id = de.id) -LEFT OUTER JOIN dsm_datasources dc on (d.collectedfrom = dc.id) -LEFT OUTER JOIN dsm_api a ON (d.id = a.datasource) -LEFT OUTER JOIN dsm_datasourcepids di ON (d.id = di.datasource) +FROM dsm_services d +LEFT OUTER JOIN dsm_services dc on (d.collectedfrom = dc.id) +LEFT OUTER JOIN dsm_api a ON (d.id = a.service) +LEFT OUTER JOIN dsm_servicepids di ON (d.id = di.service) GROUP BY d.id, @@ -119,15 +125,16 @@ GROUP BY d.releasestartdate, d.releaseenddate, d.missionstatementurl, - d.dataprovider, - d.serviceprovider, + -- TODO REMOVED ???: d.dataprovider, + -- TODO REMOVED ???: d.serviceprovider, d.databaseaccesstype, d.datauploadtype, d.databaseaccessrestriction, d.datauploadrestriction, - d.versioning, + -- REPLACED BY version_control : d.versioning, + d.version_control d.citationguidelineurl, - d.qualitymanagementkind, + -- REMOVED: d.qualitymanagementkind, d.pidsystems, d.certificates, dc.id, @@ -135,7 +142,7 @@ GROUP BY d.issn, d.eissn, d.lissn, - de.jurisdiction, - de.thematic, - de.knowledge_graph, - de.content_policies + d.jurisdiction, + d.thematic, + -- REMOVED ???: de.knowledge_graph, + d.content_policies From b7cd2c6ca1a377097775d9dcc7ed6cfebdbd9728 Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Wed, 20 Apr 2022 14:46:55 +0300 Subject: [PATCH 11/83] added open citations --- .../graph/stats/oozie_app/scripts/step13.sql | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step13.sql b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step13.sql index a5839da11..aee66fd5e 100644 --- a/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step13.sql +++ b/dhp-workflows/dhp-stats-update/src/main/resources/eu/dnetlib/dhp/oa/graph/stats/oozie_app/scripts/step13.sql @@ -80,4 +80,34 @@ where reltype='resultResult' and r2.datainfo.deletedbyinference=false and r2.datainfo.invisible = FALSE and r1.resulttype.classname != 'other' and r2.resulttype.classname != 'other' - and rel.datainfo.deletedbyinference=false and rel.datainfo.invisible = FALSE; \ No newline at end of file + and rel.datainfo.deletedbyinference=false and rel.datainfo.invisible = FALSE; + +create table ${stats_db_name}.result_citations_oc stored as parquet as +select substr(target, 4) as id, count(distinct substr(source, 4)) as citations +from ${openaire_db_name}.relation rel +join ${openaire_db_name}.result r1 on rel.source=r1.id +join ${openaire_db_name}.result r2 on r2.id=rel.target +where relClass='Cites' and rel.datainfo.provenanceaction.classid = 'sysimport:crosswalk:opencitations' + and reltype='resultResult' + and r1.resulttype.classname!=r2.resulttype.classname + and r1.datainfo.deletedbyinference=false and r1.datainfo.invisible = FALSE + and r2.datainfo.deletedbyinference=false and r2.datainfo.invisible = FALSE + and r1.resulttype.classname != 'other' + and r2.resulttype.classname != 'other' + and rel.datainfo.deletedbyinference=false and rel.datainfo.invisible = FALSE +group by substr(target, 4); + +create table ${stats_db_name}.result_references_oc stored as parquet as +select substr(source, 4) as id, count(distinct substr(target, 4)) as references +from ${openaire_db_name}.relation rel + join ${openaire_db_name}.result r1 on rel.source=r1.id + join ${openaire_db_name}.result r2 on r2.id=rel.target +where relClass='Cites' and rel.datainfo.provenanceaction.classid = 'sysimport:crosswalk:opencitations' + and reltype='resultResult' + and r1.resulttype.classname!=r2.resulttype.classname + and r1.datainfo.deletedbyinference=false and r1.datainfo.invisible = FALSE + and r2.datainfo.deletedbyinference=false and r2.datainfo.invisible = FALSE + and r1.resulttype.classname != 'other' + and r2.resulttype.classname != 'other' + and rel.datainfo.deletedbyinference=false and rel.datainfo.invisible = FALSE +group by substr(source, 4); \ No newline at end of file From 869407c6e202e765ba26d15b684ad47c516eff12 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 20 Apr 2022 14:02:05 +0200 Subject: [PATCH 12/83] [Measures] added new measure (usagecounts) as action set. Measure added at the level of the result. Ref #7587 --- .../dnetlib/dhp/actionmanager/Constants.java | 2 + .../usagestats/SparkAtomicActionUsageJob.java | 165 ++++++++++++++++++ .../usagestats/UsageStatsModel.java | 34 ++++ .../usagestats/input_actionset_parameter.json | 26 +++ .../usagestats/oozie_app/config-default.xml | 30 ++++ .../usagestats/oozie_app/workflow.xml | 98 +++++++++++ .../SparkAtomicActionCountJobTest.java | 133 ++++++++++++++ .../dhp/actionmanager/usagestats/usagestatsdb | 12 ++ pom.xml | 2 +- 9 files changed, 501 insertions(+), 1 deletion(-) create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java create mode 100644 dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/UsageStatsModel.java create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/config-default.xml create mode 100644 dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml create mode 100644 dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java create mode 100644 dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/Constants.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/Constants.java index b790d90cb..aa25ca633 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/Constants.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/Constants.java @@ -27,6 +27,8 @@ public class Constants { public static final String UPDATE_CLASS_NAME = "Inferred by OpenAIRE"; public static final String UPDATE_MEASURE_BIP_CLASS_ID = "measure:bip"; public static final String UPDATE_SUBJECT_SDG_CLASS_ID = "subject:sdg"; + public static final String UPDATE_MEASURE_USAGE_COUNTS_CLASS_ID = "measure:usage_counts"; + public static final String UPDATE_KEY_USAGE_COUNTS = "count"; public static final String FOS_CLASS_ID = "FOS"; public static final String FOS_CLASS_NAME = "Fields of Science and Technology classification"; diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java new file mode 100644 index 000000000..04f861df5 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -0,0 +1,165 @@ + +package eu.dnetlib.dhp.actionmanager.usagestats; + +import static eu.dnetlib.dhp.actionmanager.Constants.*; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkHiveSession; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.apache.commons.io.IOUtils; +import org.apache.cxf.wsdl.service.factory.MethodNameSoapActionServiceConfiguration; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapred.SequenceFileOutputFormat; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +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.SaveMode; +import org.apache.spark.sql.SparkSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.dnetlib.dhp.actionmanager.bipmodel.BipDeserialize; +import eu.dnetlib.dhp.actionmanager.bipmodel.BipScore; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.common.HdfsSupport; +import eu.dnetlib.dhp.schema.action.AtomicAction; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.DataInfo; +import eu.dnetlib.dhp.schema.oaf.KeyValue; +import eu.dnetlib.dhp.schema.oaf.Measure; +import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; +import lombok.val; +import scala.Tuple2; + +/** + * created the Atomic Action for each tipe of results + */ +public class SparkAtomicActionUsageJob implements Serializable { + + private static final Logger log = LoggerFactory.getLogger(SparkAtomicActionUsageJob.class); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public static void main(String[] args) throws Exception { + + String jsonConfiguration = IOUtils + .toString( + SparkAtomicActionUsageJob.class + .getResourceAsStream( + "/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json")); + + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + + parser.parseArgument(args); + + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + + final String outputPath = parser.get("outputPath"); + log.info("outputPath {}: ", outputPath); + + SparkConf conf = new SparkConf(); + conf.set("hive.metastore.uris", parser.get("hive_metastore_uris")); + + final String dbname = parser.get("statsdb"); + + final String workingPath = parser.get("workingPath"); + + runWithSparkHiveSession( + conf, + isSparkSessionManaged, + spark -> { + removeOutputDir(spark, outputPath); + prepareResults(dbname, spark, outputPath); + prepareActionSet(spark, workingPath, outputPath); + }); + } + + public static void prepareResults(String db, SparkSession spark, String workingPath) { + spark + .sql( + "Select result_id, downloads, views " + + "from " + db + ".usage_stats") + .as(Encoders.bean(UsageStatsModel.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath); + } + + public static void prepareActionSet(SparkSession spark, String inputPath, String outputPath){ + readPath(spark, inputPath, UsageStatsModel.class) + .groupByKey((MapFunction) us -> us.getResult_id(), Encoders.STRING()) + .mapGroups((MapGroupsFunction) (k, it) -> { + UsageStatsModel first = it.next(); + it.forEachRemaining(us -> { + first.setDownloads(first.getDownloads() + us.getDownloads()); + first.setViews(first.getViews() + us.getViews()); + }); + + Result res = new Result(); + res.setId("50|" + k); + + + res.setMeasures(getMeasure(first.getDownloads(), first.getViews())); + return res; + }, Encoders.bean(Result.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(outputPath); + } + + private static List getMeasure(Long downloads, Long views) { + DataInfo dataInfo = OafMapperUtils + .dataInfo( + false, + UPDATE_DATA_INFO_TYPE, + true, + false, + OafMapperUtils + .qualifier( + UPDATE_MEASURE_USAGE_COUNTS_CLASS_ID, + UPDATE_CLASS_NAME, + ModelConstants.DNET_PROVENANCE_ACTIONS, + ModelConstants.DNET_PROVENANCE_ACTIONS), + ""); + + return Arrays + .asList( + Measure + .newInstance("downloads", String.valueOf(downloads), UPDATE_KEY_USAGE_COUNTS, dataInfo), + Measure.newInstance("views", String.valueOf(views), UPDATE_KEY_USAGE_COUNTS, dataInfo)); + + } + + private static void removeOutputDir(SparkSession spark, String path) { + HdfsSupport.remove(path, spark.sparkContext().hadoopConfiguration()); + } + + public static Dataset readPath( + SparkSession spark, String inputPath, Class clazz) { + return spark + .read() + .textFile(inputPath) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, clazz), Encoders.bean(clazz)); + } + +} diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/UsageStatsModel.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/UsageStatsModel.java new file mode 100644 index 000000000..df8a77eb6 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/UsageStatsModel.java @@ -0,0 +1,34 @@ + +package eu.dnetlib.dhp.actionmanager.usagestats; + +import java.io.Serializable; + +public class UsageStatsModel implements Serializable { + private String result_id; + private Long downloads; + private Long views; + + public String getResult_id() { + return result_id; + } + + public void setResult_id(String result_id) { + this.result_id = result_id; + } + + public Long getDownloads() { + return downloads; + } + + public void setDownloads(Long downloads) { + this.downloads = downloads; + } + + public Long getViews() { + return views; + } + + public void setViews(Long views) { + this.views = views; + } +} diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json new file mode 100644 index 000000000..b8ae24e12 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json @@ -0,0 +1,26 @@ +[ + { + "paramName": "issm", + "paramLongName": "isSparkSessionManaged", + "paramDescription": "when true will stop SparkSession after job execution", + "paramRequired": false + }, + { + "paramName": "hmu", + "paramLongName": "hive_metastore_uris", + "paramDescription": "the URI for the hive metastore", + "paramRequired": true + }, + { + "paramName": "o", + "paramLongName": "outputPath", + "paramDescription": "the path of the new ActionSet", + "paramRequired": true + }, + { + "paramName": "sdb", + "paramLongName": "statsdb", + "paramDescription": "the name of the db to be used", + "paramRequired": true + } +] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/config-default.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/config-default.xml new file mode 100644 index 000000000..d262cb6e0 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/config-default.xml @@ -0,0 +1,30 @@ + + + jobTracker + yarnRM + + + nameNode + hdfs://nameservice1 + + + oozie.use.system.libpath + true + + + hiveMetastoreUris + thrift://iis-cdh5-test-m3.ocean.icm.edu.pl:9083 + + + hiveJdbcUrl + jdbc:hive2://iis-cdh5-test-m3.ocean.icm.edu.pl:10000 + + + hiveDbName + openaire + + + oozie.launcher.mapreduce.user.classpath.first + true + + diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml new file mode 100644 index 000000000..781efb475 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml @@ -0,0 +1,98 @@ + + + + outputPath + the path where to store the actionset + + + statsdb + the path where to store the actionset + + + sparkDriverMemory + memory for driver process + + + sparkExecutorMemory + memory for individual executor + + + sparkExecutorCores + number of cores used by single executor + + + oozieActionShareLibForSpark2 + oozie action sharelib for spark 2.* + + + spark2ExtraListeners + com.cloudera.spark.lineage.NavigatorAppListener + spark 2.* extra listeners classname + + + spark2SqlQueryExecutionListeners + com.cloudera.spark.lineage.NavigatorQueryListener + spark 2.* sql query execution listeners classname + + + spark2YarnHistoryServerAddress + spark 2.* yarn history server address + + + spark2EventLogDir + spark 2.* event log dir location + + + + + ${jobTracker} + ${nameNode} + + + mapreduce.job.queuename + ${queueName} + + + oozie.launcher.mapred.job.queue.name + ${oozieLauncherQueueName} + + + oozie.action.sharelib.for.spark + ${oozieActionShareLibForSpark2} + + + + + + + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] + + + + + + yarn + cluster + Produces the atomic action with the usage stats count for results + eu.dnetlib.dhp.actionmanager.usagestats.SparkAtomicActionUsageJob + dhp-aggregation-${projectVersion}.jar + + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.warehouse.dir=${sparkSqlWarehouseDir} + + --hive_metastore_uris${hiveMetastoreUris} + --outputPath${outputPath} + --statsdb${statsdb} + + + + + + + \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java new file mode 100644 index 000000000..33d76893d --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java @@ -0,0 +1,133 @@ + +package eu.dnetlib.dhp.actionmanager.usagestats; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.stream.Collectors; + +import org.apache.commons.io.FileUtils; +import org.apache.hadoop.io.Text; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +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.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.dnetlib.dhp.actionmanager.bipfinder.SparkAtomicActionScoreJob; +import eu.dnetlib.dhp.schema.action.AtomicAction; +import eu.dnetlib.dhp.schema.oaf.Result; + +public class SparkAtomicActionCountJobTest { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + private static SparkSession spark; + + private static Path workingDir; + private static final Logger log = LoggerFactory + .getLogger(SparkAtomicActionCountJobTest.class); + + @BeforeAll + public static void beforeAll() throws IOException { + workingDir = Files + .createTempDirectory(SparkAtomicActionCountJobTest.class.getSimpleName()); + log.info("using work dir {}", workingDir); + + SparkConf conf = new SparkConf(); + conf.setAppName(SparkAtomicActionCountJobTest.class.getSimpleName()); + + conf.setMaster("local[*]"); + conf.set("spark.driver.host", "localhost"); + conf.set("hive.metastore.local", "true"); + conf.set("spark.ui.enabled", "false"); + conf.set("spark.sql.warehouse.dir", workingDir.toString()); + conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); + + spark = SparkSession + .builder() + .appName(SparkAtomicActionCountJobTest.class.getSimpleName()) + .config(conf) + .getOrCreate(); + } + + @AfterAll + public static void afterAll() throws IOException { + FileUtils.deleteDirectory(workingDir.toFile()); + spark.stop(); + } + + @Test + void testMatch() { + String usageScoresPath = getClass() + .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") + .getPath(); + + SparkAtomicActionUsageJob.prepareActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); + + final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/actionSet") + .map(usm -> OBJECT_MAPPER.readValue(usm, Result.class)); + + Assertions.assertEquals(9, tmp.count()); + + tmp.foreach(r -> Assertions.assertEquals(2, r.getMeasures().size())); + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertFalse(u.getDataInfo().getDeletedbyinference())))); + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertTrue(u.getDataInfo().getInferred())))); + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertFalse(u.getDataInfo().getInvisible())))); + + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertEquals("measure:usage_counts", + u.getDataInfo().getProvenanceaction().getClassid())))); + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertEquals("Inferred by OpenAIRE", + u.getDataInfo().getProvenanceaction().getClassname())))); + + tmp.foreach(r -> r.getMeasures().stream().forEach(m -> + m.getUnit().stream().forEach(u -> Assertions.assertEquals("count", + u.getKey())))); + + Assertions.assertEquals(1, tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).count()); + + Assertions.assertEquals("0", tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + Assertions.assertEquals("5", tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + + Assertions.assertEquals("0", tmp.filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + Assertions.assertEquals("1", tmp.filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + + Assertions.assertEquals("2", tmp.filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + Assertions.assertEquals("6", tmp.filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")).collect().get(0) + .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) + .getUnit().get(0).getValue()); + } + + + +} diff --git a/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb new file mode 100644 index 000000000..fee74f697 --- /dev/null +++ b/dhp-workflows/dhp-aggregation/src/test/resources/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb @@ -0,0 +1,12 @@ +{"result_id":"dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6","downloads":0,"views":4} +{"result_id":"dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6","downloads":0,"views":1} +{"result_id":"doi_________::17eda2ff77407538fbe5d3d719b9d1c0","downloads":0,"views":1} +{"result_id":"doi_________::1d4dc08605fd0a2be1105d30c63bfea1","downloads":1,"views":3} +{"result_id":"doi_________::2e3527822854ca9816f6dfea5bff61a8","downloads":1,"views":1} +{"result_id":"doi_________::3085e4c6e051378ca6157fe7f0430c1f","downloads":2,"views":3} +{"result_id":"doi_________::3085e4c6e051378ca6157fe7f0430c1f","downloads":0,"views":3} +{"result_id":"doi_________::33f710e6dd30cc5e67e35b371ddc33cf","downloads":0,"views":1} +{"result_id":"doi_________::39738ebf10654732dd3a7af9f24655f8","downloads":1,"views":3} +{"result_id":"doi_________::3c3b65f07c1a06c7894397eda1d11bbf","downloads":1,"views":8} +{"result_id":"doi_________::3c3b65f07c1a06c7894397eda1d11bbf","downloads":0,"views":2} +{"result_id":"doi_________::4938a71a884dd481d329657aa543b850","downloads":0,"views":3} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 136b9b867..b0957393a 100644 --- a/pom.xml +++ b/pom.xml @@ -801,7 +801,7 @@ 3.3.3 3.4.2 [2.12,3.0) - [2.10.32] + [2.11.34-SNAPSHOT] [4.0.3] [6.0.5] [3.1.6] From 5feae77937df688e43f8c17988424dcf04259722 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 20 Apr 2022 15:13:09 +0200 Subject: [PATCH 13/83] [Measures] last changes to accomodate tests --- .../usagestats/SparkAtomicActionUsageJob.java | 23 +- .../usagestats/input_actionset_parameter.json | 6 + .../usagestats/oozie_app/workflow.xml | 1 + .../SparkAtomicActionCountJobTest.java | 200 ++++++++++++++---- 4 files changed, 181 insertions(+), 49 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 04f861df5..012261c39 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -94,19 +94,19 @@ public class SparkAtomicActionUsageJob implements Serializable { public static void prepareResults(String db, SparkSession spark, String workingPath) { spark - .sql( - "Select result_id, downloads, views " + - "from " + db + ".usage_stats") - .as(Encoders.bean(UsageStatsModel.class)) - .write() - .mode(SaveMode.Overwrite) - .option("compression", "gzip") - .json(workingPath); + .sql( + "Select result_id, downloads, views " + + "from " + db + ".usage_stats") + .as(Encoders.bean(UsageStatsModel.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath); } - public static void prepareActionSet(SparkSession spark, String inputPath, String outputPath){ - readPath(spark, inputPath, UsageStatsModel.class) - .groupByKey((MapFunction) us -> us.getResult_id(), Encoders.STRING()) + public static void prepareActionSet(SparkSession spark, String inputPath, String outputPath) { + readPath(spark, inputPath, UsageStatsModel.class) + .groupByKey((MapFunction) us -> us.getResult_id(), Encoders.STRING()) .mapGroups((MapGroupsFunction) (k, it) -> { UsageStatsModel first = it.next(); it.forEachRemaining(us -> { @@ -117,7 +117,6 @@ public class SparkAtomicActionUsageJob implements Serializable { Result res = new Result(); res.setId("50|" + k); - res.setMeasures(getMeasure(first.getDownloads(), first.getViews())); return res; }, Encoders.bean(Result.class)) diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json index b8ae24e12..821905da4 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json @@ -22,5 +22,11 @@ "paramLongName": "statsdb", "paramDescription": "the name of the db to be used", "paramRequired": true + }, + { + "paramName": "wp", + "paramLongName": "workingPath", + "paramDescription": "the workingPath where to save the content of the usage_stats table", + "paramRequired": true } ] \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml index 781efb475..5b552ca4b 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml @@ -89,6 +89,7 @@ --hive_metastore_uris${hiveMetastoreUris} --outputPath${outputPath} --statsdb${statsdb} + --workingPath${workingDir}/usageDb diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java index 33d76893d..7cc9eb326 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionCountJobTest.java @@ -75,7 +75,7 @@ public class SparkAtomicActionCountJobTest { .getResource("/eu/dnetlib/dhp/actionmanager/usagestats/usagestatsdb") .getPath(); - SparkAtomicActionUsageJob.prepareActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); + SparkAtomicActionUsageJob.prepareActionSet(spark, usageScoresPath, workingDir.toString() + "/actionSet"); final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); @@ -86,48 +86,174 @@ public class SparkAtomicActionCountJobTest { Assertions.assertEquals(9, tmp.count()); tmp.foreach(r -> Assertions.assertEquals(2, r.getMeasures().size())); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertFalse(u.getDataInfo().getDeletedbyinference())))); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertTrue(u.getDataInfo().getInferred())))); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertFalse(u.getDataInfo().getInvisible())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m + .getUnit() + .stream() + .forEach(u -> Assertions.assertFalse(u.getDataInfo().getDeletedbyinference())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m.getUnit().stream().forEach(u -> Assertions.assertTrue(u.getDataInfo().getInferred())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m + .getUnit() + .stream() + .forEach(u -> Assertions.assertFalse(u.getDataInfo().getInvisible())))); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertEquals("measure:usage_counts", - u.getDataInfo().getProvenanceaction().getClassid())))); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertEquals("Inferred by OpenAIRE", - u.getDataInfo().getProvenanceaction().getClassname())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m + .getUnit() + .stream() + .forEach( + u -> Assertions + .assertEquals( + "measure:usage_counts", + u.getDataInfo().getProvenanceaction().getClassid())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m + .getUnit() + .stream() + .forEach( + u -> Assertions + .assertEquals( + "Inferred by OpenAIRE", + u.getDataInfo().getProvenanceaction().getClassname())))); - tmp.foreach(r -> r.getMeasures().stream().forEach(m -> - m.getUnit().stream().forEach(u -> Assertions.assertEquals("count", - u.getKey())))); + tmp + .foreach( + r -> r + .getMeasures() + .stream() + .forEach( + m -> m + .getUnit() + .stream() + .forEach( + u -> Assertions + .assertEquals( + "count", + u.getKey())))); - Assertions.assertEquals(1, tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).count()); + Assertions + .assertEquals( + 1, tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).count()); - Assertions.assertEquals("0", tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); - Assertions.assertEquals("5", tmp.filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); + Assertions + .assertEquals( + "0", + tmp + .filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("downloads")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); + Assertions + .assertEquals( + "5", + tmp + .filter(r -> r.getId().equals("50|dedup_wf_001::53575dc69e9ace947e02d47ecd54a7a6")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("views")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); - Assertions.assertEquals("0", tmp.filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); - Assertions.assertEquals("1", tmp.filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); + Assertions + .assertEquals( + "0", + tmp + .filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("downloads")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); + Assertions + .assertEquals( + "1", + tmp + .filter(r -> r.getId().equals("50|doi_________::17eda2ff77407538fbe5d3d719b9d1c0")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("views")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); - Assertions.assertEquals("2", tmp.filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("downloads")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); - Assertions.assertEquals("6", tmp.filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")).collect().get(0) - .getMeasures().stream().filter(m -> m.getId().equals("views")).collect(Collectors.toList()).get(0) - .getUnit().get(0).getValue()); + Assertions + .assertEquals( + "2", + tmp + .filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("downloads")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); + Assertions + .assertEquals( + "6", + tmp + .filter(r -> r.getId().equals("50|doi_________::3085e4c6e051378ca6157fe7f0430c1f")) + .collect() + .get(0) + .getMeasures() + .stream() + .filter(m -> m.getId().equals("views")) + .collect(Collectors.toList()) + .get(0) + .getUnit() + .get(0) + .getValue()); } - - } From dbfbe8841a8ec3335ed479111cc96b48f2a6b30b Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 20 Apr 2022 15:41:03 +0200 Subject: [PATCH 14/83] [Clean Context] changed the description in input parameters --- .../dnetlib/dhp/oa/graph/input_clean_context_parameters.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json index 9b1588283..e3d31d69f 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json @@ -20,7 +20,7 @@ { "paramName": "ci", "paramLongName": "contextId", - "paramDescription": "url to the ISLookup Service", + "paramDescription": "the id of the context to be removed", "paramRequired": true }, { @@ -31,7 +31,7 @@ },{ "paramName": "vf", "paramLongName": "verifyParam", - "paramDescription": "url to the ISLookup Service", + "paramDescription": "the parameter to be verified to remove the context", "paramRequired": true } ] From 5295effc9664fea8f92e148019d36469091484fd Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 20 Apr 2022 16:20:40 +0200 Subject: [PATCH 15/83] [Measures] fixed issue --- .../dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 012261c39..261794598 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -87,7 +87,7 @@ public class SparkAtomicActionUsageJob implements Serializable { isSparkSessionManaged, spark -> { removeOutputDir(spark, outputPath); - prepareResults(dbname, spark, outputPath); + prepareResults(dbname, spark, workingPath); prepareActionSet(spark, workingPath, outputPath); }); } From c304657d9195b334c44bce4a11649a68c60a3299 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 11:27:26 +0200 Subject: [PATCH 16/83] [Measures] put the logic in common, no need to change the schema --- .../dhp/schema/oaf/utils/OafMapperUtils.java | 15 +++++++++++++ .../usagestats/SparkAtomicActionUsageJob.java | 22 ++++--------------- pom.xml | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java index 0a51e8600..8d67ce804 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java @@ -391,4 +391,19 @@ public class OafMapperUtils { } return null; } + + public static KeyValue newKeyValueInstance (String key, String value, DataInfo dataInfo){ + KeyValue kv = new KeyValue(); + kv.setDataInfo(dataInfo); + kv.setKey(key); + kv.setValue(value); + return kv; + } + + public static Measure newMeasureInstance(String id, String value, String key, DataInfo dataInfo) { + Measure m = new Measure(); + m.setId(id); + m.setUnit(Arrays.asList(newKeyValueInstance(key, value, dataInfo))); + return m; + } } diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 261794598..790170ccc 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -3,23 +3,14 @@ package eu.dnetlib.dhp.actionmanager.usagestats; import static eu.dnetlib.dhp.actionmanager.Constants.*; import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkHiveSession; -import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; import java.io.Serializable; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; -import org.apache.cxf.wsdl.service.factory.MethodNameSoapActionServiceConfiguration; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mapred.SequenceFileOutputFormat; import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -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; @@ -31,19 +22,15 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.actionmanager.bipmodel.BipDeserialize; -import eu.dnetlib.dhp.actionmanager.bipmodel.BipScore; + import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.common.HdfsSupport; -import eu.dnetlib.dhp.schema.action.AtomicAction; import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.oaf.DataInfo; -import eu.dnetlib.dhp.schema.oaf.KeyValue; import eu.dnetlib.dhp.schema.oaf.Measure; import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; -import lombok.val; -import scala.Tuple2; + /** * created the Atomic Action for each tipe of results @@ -143,9 +130,8 @@ public class SparkAtomicActionUsageJob implements Serializable { return Arrays .asList( - Measure - .newInstance("downloads", String.valueOf(downloads), UPDATE_KEY_USAGE_COUNTS, dataInfo), - Measure.newInstance("views", String.valueOf(views), UPDATE_KEY_USAGE_COUNTS, dataInfo)); + OafMapperUtils.newMeasureInstance("downloads", String.valueOf(downloads), UPDATE_KEY_USAGE_COUNTS, dataInfo), + OafMapperUtils.newMeasureInstance("views", String.valueOf(views), UPDATE_KEY_USAGE_COUNTS, dataInfo)); } diff --git a/pom.xml b/pom.xml index b0957393a..136b9b867 100644 --- a/pom.xml +++ b/pom.xml @@ -801,7 +801,7 @@ 3.3.3 3.4.2 [2.12,3.0) - [2.11.34-SNAPSHOT] + [2.10.32] [4.0.3] [6.0.5] [3.1.6] From d012d125d7b5c75a5d492353a0e387f05cf0934e Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 12:02:09 +0200 Subject: [PATCH 17/83] [EOSCTag] - --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java new file mode 100644 index 000000000..2b44275cd --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -0,0 +1,67 @@ +package eu.dnetlib.dhp.bulktag; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.bulktag.community.CommunityConfiguration; +import eu.dnetlib.dhp.bulktag.community.CommunityConfigurationFactory; +import eu.dnetlib.dhp.bulktag.community.ProtoMap; +import eu.dnetlib.dhp.bulktag.community.QueryInformationSystem; +import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.schema.oaf.Software; +import org.apache.commons.io.IOUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.SparkSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Optional; + +import static eu.dnetlib.dhp.PropagationConstant.readPath; +import static eu.dnetlib.dhp.PropagationConstant.removeOutputDir; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +public class SparkEoscTag { + private static final Logger log = LoggerFactory.getLogger(SparkEoscTag.class); + public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public static void main(String[] args) throws Exception { + String jsonConfiguration = IOUtils + .toString( + SparkEoscTag.class + .getResourceAsStream( + "/eu/dnetlib/dhp/bulktag/input_eosctag_parameters.json")); + + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + parser.parseArgument(args); + + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + + final String inputPath = parser.get("sourcePath"); + log.info("inputPath: {}", inputPath); + + SparkConf conf = new SparkConf(); + + runWithSparkSession( + conf, + isSparkSessionManaged, + spark -> { + execEoscTag(spark, inputPath); + + }); + } + + private static void execEoscTag(SparkSession spark, String inputPath) { + //search for notebook + //subject contiene jupyter. + //esistono python e notebook nei subject non necessariamente nello stesso + //si cerca fra i prodotto di tipo software + Dataset sw = readPath(spark, inputPath + "/software", Software.class) + + } +} From b61efd613b5ba5e324f2a1e4a40f549baf52b4dc Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 12:09:37 +0200 Subject: [PATCH 18/83] [Measures] addressed comments in the PR --- .../eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java | 2 +- .../usagestats/SparkAtomicActionUsageJob.java | 9 ++++----- .../usagestats/input_actionset_parameter.json | 2 +- .../dhp/actionmanager/usagestats/oozie_app/workflow.xml | 6 +++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java index 8d67ce804..9ee359cd5 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java @@ -392,7 +392,7 @@ public class OafMapperUtils { return null; } - public static KeyValue newKeyValueInstance (String key, String value, DataInfo dataInfo){ + public static KeyValue newKeyValueInstance(String key, String value, DataInfo dataInfo) { KeyValue kv = new KeyValue(); kv.setDataInfo(dataInfo); kv.setKey(key); diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 790170ccc..04533aa53 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -22,7 +22,6 @@ import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; - import eu.dnetlib.dhp.application.ArgumentApplicationParser; import eu.dnetlib.dhp.common.HdfsSupport; import eu.dnetlib.dhp.schema.common.ModelConstants; @@ -31,7 +30,6 @@ import eu.dnetlib.dhp.schema.oaf.Measure; import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; - /** * created the Atomic Action for each tipe of results */ @@ -65,7 +63,7 @@ public class SparkAtomicActionUsageJob implements Serializable { SparkConf conf = new SparkConf(); conf.set("hive.metastore.uris", parser.get("hive_metastore_uris")); - final String dbname = parser.get("statsdb"); + final String dbname = parser.get("usagestatsdb"); final String workingPath = parser.get("workingPath"); @@ -130,8 +128,9 @@ public class SparkAtomicActionUsageJob implements Serializable { return Arrays .asList( - OafMapperUtils.newMeasureInstance("downloads", String.valueOf(downloads), UPDATE_KEY_USAGE_COUNTS, dataInfo), - OafMapperUtils.newMeasureInstance("views", String.valueOf(views), UPDATE_KEY_USAGE_COUNTS, dataInfo)); + OafMapperUtils + .newMeasureInstance("downloads", String.valueOf(downloads), UPDATE_KEY_USAGE_COUNTS, dataInfo), + OafMapperUtils.newMeasureInstance("views", String.valueOf(views), UPDATE_KEY_USAGE_COUNTS, dataInfo)); } diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json index 821905da4..e9200d3ad 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/input_actionset_parameter.json @@ -19,7 +19,7 @@ }, { "paramName": "sdb", - "paramLongName": "statsdb", + "paramLongName": "usagestatsdb", "paramDescription": "the name of the db to be used", "paramRequired": true }, diff --git a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml index 5b552ca4b..d94cf7d53 100644 --- a/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-aggregation/src/main/resources/eu/dnetlib/dhp/actionmanager/usagestats/oozie_app/workflow.xml @@ -5,8 +5,8 @@ the path where to store the actionset - statsdb - the path where to store the actionset + usagestatsdb + the name of the db to be used sparkDriverMemory @@ -88,7 +88,7 @@ --hive_metastore_uris${hiveMetastoreUris} --outputPath${outputPath} - --statsdb${statsdb} + --usagestatsdb${usagestatsdb} --workingPath${workingDir}/usageDb From 20de75ca64cb0237dcc6a19caa0fc1308d60f7d5 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 12:14:03 +0200 Subject: [PATCH 19/83] [Measures] removed typo --- .../dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java index 04533aa53..c284ad8bd 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/actionmanager/usagestats/SparkAtomicActionUsageJob.java @@ -31,7 +31,7 @@ import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; /** - * created the Atomic Action for each tipe of results + * created the Atomic Action for each type of results */ public class SparkAtomicActionUsageJob implements Serializable { From ccba1a3db1f5dfd99743e4aee957a2e5553f4a83 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 13:00:06 +0200 Subject: [PATCH 20/83] [Clean Context] added logic to cleaning workflow to accomodate also context cleaning --- .../dhp/oa/graph/clean/oozie_app/workflow.xml | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml index dc0529012..58ad6f1f5 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml @@ -13,6 +13,10 @@ isLookupUrl the address of the lookUp service + + shouldCleanContext + false + sparkDriverMemory @@ -275,7 +279,23 @@ - + + + + + ${wf:conf('shouldCleanContext') eq true} + + + + + + + + + + + + \ No newline at end of file From 5b7d9e741c2a77d408cc0db3ef9d357c4c27fe96 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 13:02:14 +0200 Subject: [PATCH 21/83] [Clean Context] added logic to cleaning workflow to accomodate also context cleaning --- .../dhp/oa/graph/clean/oozie_app/workflow.xml | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml index 58ad6f1f5..12ba3e5a7 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml @@ -295,7 +295,115 @@ + + + yarn + cluster + Clean publications context + eu.dnetlib.dhp.oa.graph.clean.CleanContextSparkJob + dhp-graph-mapper-${projectVersion}.jar + + --executor-cores=${sparkExecutorCores} + --executor-memory=${sparkExecutorMemory} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.shuffle.partitions=7680 + + --inputPath${inputPath}/publication + --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Publication + --workingPath${workingDir}/working + --contextId${contextId} + --verifyParam${verifyParam} + + + + + + + yarn + cluster + Clean datasets Context + eu.dnetlib.dhp.oa.graph.clean.CleanContextSparkJob + dhp-graph-mapper-${projectVersion}.jar + + --executor-cores=${sparkExecutorCores} + --executor-memory=${sparkExecutorMemory} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.shuffle.partitions=7680 + + --inputPath${graphInputPath}/dataset + --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Dataset + --workingPath${workingDir}/working + --contextId${contextId} + --verifyParam${verifyParam} + + + + + + + yarn + cluster + Clean otherresearchproducts context + eu.dnetlib.dhp.oa.graph.clean.CleanContextSparkJob + dhp-graph-mapper-${projectVersion}.jar + + --executor-cores=${sparkExecutorCores} + --executor-memory=${sparkExecutorMemory} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.shuffle.partitions=7680 + + --inputPath${graphInputPath}/otherresearchproduct + --graphTableClassNameeu.dnetlib.dhp.schema.oaf.OtherResearchProduct + --workingPath${workingDir}/working + --contextId${contextId} + --verifyParam${verifyParam} + + + + + + + + yarn + cluster + Clean softwares context + eu.dnetlib.dhp.oa.graph.clean.CleanContextSparkJob + dhp-graph-mapper-${projectVersion}.jar + + --executor-cores=${sparkExecutorCores} + --executor-memory=${sparkExecutorMemory} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.shuffle.partitions=7680 + + --inputPath${graphInputPath}/software + --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Software + --workingPath${workingDir}/working + --contextId${contextId} + --verifyParam${verifyParam} + + + + + + + \ No newline at end of file From 29150a5d0c69a540b546ffcfbc91114e68c40301 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 21 Apr 2022 13:31:56 +0200 Subject: [PATCH 22/83] code formatting --- .../oa/graph/clean/CleanContextSparkJob.java | 181 +++++---- .../dhp/oa/graph/clean/CleanContextTest.java | 375 ++++++++++++------ 2 files changed, 357 insertions(+), 199 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java index b20dcb67b..3e9b17f3f 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java @@ -1,16 +1,13 @@ + package eu.dnetlib.dhp.oa.graph.clean; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.application.ArgumentApplicationParser; -import eu.dnetlib.dhp.common.HdfsSupport; -import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.Context; -import eu.dnetlib.dhp.schema.oaf.Oaf; -import eu.dnetlib.dhp.schema.oaf.OafEntity; -import eu.dnetlib.dhp.schema.oaf.Result; -import eu.dnetlib.dhp.utils.ISLookupClientFactory; -import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.MapFunction; @@ -21,93 +18,113 @@ import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.Serializable; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; -import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.common.HdfsSupport; +import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.Context; +import eu.dnetlib.dhp.schema.oaf.Oaf; +import eu.dnetlib.dhp.schema.oaf.OafEntity; +import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.utils.ISLookupClientFactory; +import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; public class CleanContextSparkJob implements Serializable { - private static final Logger log = LoggerFactory.getLogger(CleanContextSparkJob.class); + private static final Logger log = LoggerFactory.getLogger(CleanContextSparkJob.class); - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - public static void main(String[] args) throws Exception { + public static void main(String[] args) throws Exception { - String jsonConfiguration = IOUtils - .toString( - CleanContextSparkJob.class - .getResourceAsStream( - "/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json")); - final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); - parser.parseArgument(args); + String jsonConfiguration = IOUtils + .toString( + CleanContextSparkJob.class + .getResourceAsStream( + "/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json")); + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + parser.parseArgument(args); - Boolean isSparkSessionManaged = Optional - .ofNullable(parser.get("isSparkSessionManaged")) - .map(Boolean::valueOf) - .orElse(Boolean.TRUE); - log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); - String inputPath = parser.get("inputPath"); - log.info("inputPath: {}", inputPath); + String inputPath = parser.get("inputPath"); + log.info("inputPath: {}", inputPath); - String workingPath = parser.get("workingPath"); - log.info("workingPath: {}", workingPath); + String workingPath = parser.get("workingPath"); + log.info("workingPath: {}", workingPath); - String contextId = parser.get("contextId"); - log.info("contextId: {}", contextId); + String contextId = parser.get("contextId"); + log.info("contextId: {}", contextId); - String verifyParam = parser.get("verifyParam"); - log.info("verifyParam: {}", verifyParam); + String verifyParam = parser.get("verifyParam"); + log.info("verifyParam: {}", verifyParam); + String graphTableClassName = parser.get("graphTableClassName"); + log.info("graphTableClassName: {}", graphTableClassName); - String graphTableClassName = parser.get("graphTableClassName"); - log.info("graphTableClassName: {}", graphTableClassName); + Class entityClazz = (Class) Class.forName(graphTableClassName); - Class entityClazz = (Class) Class.forName(graphTableClassName); + SparkConf conf = new SparkConf(); + runWithSparkSession( + conf, + isSparkSessionManaged, + spark -> { + cleanContext(spark, contextId, verifyParam, inputPath, entityClazz, workingPath); + }); + } - SparkConf conf = new SparkConf(); - runWithSparkSession( - conf, - isSparkSessionManaged, - spark -> { + private static void cleanContext(SparkSession spark, String contextId, String verifyParam, + String inputPath, Class entityClazz, String workingPath) { + Dataset res = spark + .read() + .textFile(inputPath) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)); - cleanContext(spark, contextId, verifyParam, inputPath, entityClazz, workingPath); - }); - } + res.map((MapFunction) r -> { + if (!r + .getTitle() + .stream() + .filter( + t -> t + .getQualifier() + .getClassid() + .equalsIgnoreCase(ModelConstants.MAIN_TITLE_QUALIFIER.getClassid())) + .anyMatch(t -> t.getValue().toLowerCase().startsWith(verifyParam.toLowerCase()))) { + return r; + } + r + .setContext( + r + .getContext() + .stream() + .filter( + c -> !c.getId().split("::")[0] + .equalsIgnoreCase(contextId)) + .collect(Collectors.toList())); + return r; + }, Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath); - private static void cleanContext(SparkSession spark, String contextId, String verifyParam, String inputPath, Class entityClazz, String workingPath) { - Dataset res = spark - .read() - .textFile(inputPath) - .map( - (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), - Encoders.bean(entityClazz)); - - res.map((MapFunction) r -> { - if(!r.getTitle() - .stream() - .filter(t -> t.getQualifier().getClassid() - .equalsIgnoreCase(ModelConstants.MAIN_TITLE_QUALIFIER.getClassid())) - .anyMatch(t -> t.getValue().toLowerCase().startsWith(verifyParam.toLowerCase()))){ - return r; - } - r.setContext(r.getContext().stream().filter(c -> !c.getId().split("::")[0] - .equalsIgnoreCase(contextId)).collect(Collectors.toList())); - return r; - } ,Encoders.bean(entityClazz)) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(workingPath); - - spark.read().textFile(workingPath).map((MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), - Encoders.bean(entityClazz)) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(inputPath); - } + spark + .read() + .textFile(workingPath) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(inputPath); + } } diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java index bba814346..472d3781d 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java @@ -1,18 +1,12 @@ + package eu.dnetlib.dhp.oa.graph.clean; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.oa.graph.dump.Constants; -import eu.dnetlib.dhp.oa.graph.dump.DumpJobTest; -import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; -import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.Instance; -import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; -import eu.dnetlib.dhp.schema.oaf.Publication; -import eu.dnetlib.dhp.schema.oaf.Software; -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Locale; + import org.apache.commons.io.FileUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; @@ -27,133 +21,280 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Locale; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.dnetlib.dhp.oa.graph.dump.Constants; +import eu.dnetlib.dhp.oa.graph.dump.DumpJobTest; +import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; +import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.dump.oaf.Instance; +import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; +import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.schema.oaf.Publication; +import eu.dnetlib.dhp.schema.oaf.Software; +import eu.dnetlib.dhp.schema.oaf.StructuredProperty; public class CleanContextTest { - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - private static SparkSession spark; + private static SparkSession spark; - private static Path workingDir; + private static Path workingDir; - private static final Logger log = LoggerFactory.getLogger(CleanContextTest.class); + private static final Logger log = LoggerFactory.getLogger(CleanContextTest.class); - @BeforeAll - public static void beforeAll() throws IOException { - workingDir = Files.createTempDirectory(DumpJobTest.class.getSimpleName()); - log.info("using work dir {}", workingDir); + @BeforeAll + public static void beforeAll() throws IOException { + workingDir = Files.createTempDirectory(DumpJobTest.class.getSimpleName()); + log.info("using work dir {}", workingDir); - SparkConf conf = new SparkConf(); - conf.setAppName(DumpJobTest.class.getSimpleName()); + SparkConf conf = new SparkConf(); + conf.setAppName(DumpJobTest.class.getSimpleName()); - conf.setMaster("local[*]"); - conf.set("spark.driver.host", "localhost"); - conf.set("hive.metastore.local", "true"); - conf.set("spark.ui.enabled", "false"); - conf.set("spark.sql.warehouse.dir", workingDir.toString()); - conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); + conf.setMaster("local[*]"); + conf.set("spark.driver.host", "localhost"); + conf.set("hive.metastore.local", "true"); + conf.set("spark.ui.enabled", "false"); + conf.set("spark.sql.warehouse.dir", workingDir.toString()); + conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); - spark = SparkSession - .builder() - .appName(DumpJobTest.class.getSimpleName()) - .config(conf) - .getOrCreate(); - } + spark = SparkSession + .builder() + .appName(DumpJobTest.class.getSimpleName()) + .config(conf) + .getOrCreate(); + } - @AfterAll - public static void afterAll() throws IOException { - FileUtils.deleteDirectory(workingDir.toFile()); - spark.stop(); - } + @AfterAll + public static void afterAll() throws IOException { + FileUtils.deleteDirectory(workingDir.toFile()); + spark.stop(); + } - @Test - public void testResultClean() throws Exception { - final String sourcePath = getClass() - .getResource("/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json") - .getPath(); - final String prefix = "gcube "; + @Test + public void testResultClean() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json") + .getPath(); + final String prefix = "gcube "; + spark + .read() + .textFile(sourcePath) + .map( + (MapFunction) r -> OBJECT_MAPPER.readValue(r, Publication.class), + Encoders.bean(Publication.class)) + .write() + .json(workingDir.toString() + "/publication"); - spark.read().textFile(sourcePath).map((MapFunction) r -> OBJECT_MAPPER.readValue(r, Publication.class), Encoders.bean(Publication.class)) - .write().json(workingDir.toString() + "/publication"); + CleanContextSparkJob.main(new String[] { + "--isSparkSessionManaged", Boolean.FALSE.toString(), + "--inputPath", workingDir.toString() + "/publication", + "-graphTableClassName", Publication.class.getCanonicalName(), + "-workingPath", workingDir.toString() + "/working", + "-contextId", "sobigdata", + "-verifyParam", "gCube " + }); + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/publication") + .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); - CleanContextSparkJob.main(new String[] { - "--isSparkSessionManaged", Boolean.FALSE.toString(), - "--inputPath", workingDir.toString() + "/publication", - "-graphTableClassName", Publication.class.getCanonicalName(), - "-workingPath", workingDir.toString() + "/working", - "-contextId","sobigdata", - "-verifyParam","gCube " - }); + Assertions.assertEquals(7, tmp.count()); - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/publication") - .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); + // original result with sobigdata context and gcube as starting string in the main title for the publication + Assertions + .assertEquals( + 0, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::0224aae28af558f21768dbc6439c7a95")) + .collect() + .get(0) + .getContext() + .size()); - Assertions.assertEquals(7, tmp.count()); + // original result with sobigdata context without gcube as starting string in the main title for the publication + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::2", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); - //original result with sobigdata context and gcube as starting string in the main title for the publication - Assertions.assertEquals(0, - tmp.filter(p->p.getId().equals("50|DansKnawCris::0224aae28af558f21768dbc6439c7a95")).collect().get(0).getContext().size()); + // original result with sobigdata context with gcube as starting string in the subtitle + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::2", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + List titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertEquals("subtitle", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context without gcube as starting string in the main title for the publication - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().get(0).getId() ); + // original result with sobigdata context with gcube not as starting string in the main title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::1", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertFalse(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().contains(prefix.trim())); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context with gcube as starting string in the subtitle - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().get(0).getId() ); - List titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertEquals("subtitle", titles.get(0).getQualifier().getClassid()); + // original result with sobigdata in context and also other contexts with gcube as starting string for the main + // title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context with gcube not as starting string in the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::1",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertFalse(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().contains(prefix.trim()) ); - Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + // original result with multiple main title one of which whith gcube as starting string and with 2 contextes + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(2, titles.size()); + Assertions + .assertTrue( + titles + .stream() + .anyMatch( + t -> t.getQualifier().getClassid().equals("main title") + && t.getValue().toLowerCase().startsWith(prefix))); - //original result with sobigdata in context and also other contexts with gcube as starting string for the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + // original result without sobigdata in context with gcube as starting string for the main title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(2, titles.size()); - //original result with multiple main title one of which whith gcube as starting string and with 2 contextes - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getTitle(); - Assertions.assertEquals(2, titles.size()); - Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix)) ); + Assertions + .assertTrue( + titles + .stream() + .anyMatch( + t -> t.getQualifier().getClassid().equals("main title") + && t.getValue().toLowerCase().startsWith(prefix))); - - //original result without sobigdata in context with gcube as starting string for the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getTitle(); - Assertions.assertEquals(2, titles.size()); - - Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix))); - - - } + } } From 9a961a0092d2de554c197934cb317beb5bb0335f Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 15:12:24 +0200 Subject: [PATCH 23/83] [Clean Context] fixed issue in param name --- .../oa/graph/clean/CleanContextSparkJob.java | 181 +++++---- .../dhp/oa/graph/clean/oozie_app/workflow.xml | 20 +- .../dhp/oa/graph/clean/CleanContextTest.java | 375 ++++++++++++------ 3 files changed, 367 insertions(+), 209 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java index b20dcb67b..3e9b17f3f 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextSparkJob.java @@ -1,16 +1,13 @@ + package eu.dnetlib.dhp.oa.graph.clean; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.application.ArgumentApplicationParser; -import eu.dnetlib.dhp.common.HdfsSupport; -import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.Context; -import eu.dnetlib.dhp.schema.oaf.Oaf; -import eu.dnetlib.dhp.schema.oaf.OafEntity; -import eu.dnetlib.dhp.schema.oaf.Result; -import eu.dnetlib.dhp.utils.ISLookupClientFactory; -import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.MapFunction; @@ -21,93 +18,113 @@ import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.Serializable; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; -import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.common.HdfsSupport; +import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.Context; +import eu.dnetlib.dhp.schema.oaf.Oaf; +import eu.dnetlib.dhp.schema.oaf.OafEntity; +import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.utils.ISLookupClientFactory; +import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; public class CleanContextSparkJob implements Serializable { - private static final Logger log = LoggerFactory.getLogger(CleanContextSparkJob.class); + private static final Logger log = LoggerFactory.getLogger(CleanContextSparkJob.class); - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - public static void main(String[] args) throws Exception { + public static void main(String[] args) throws Exception { - String jsonConfiguration = IOUtils - .toString( - CleanContextSparkJob.class - .getResourceAsStream( - "/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json")); - final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); - parser.parseArgument(args); + String jsonConfiguration = IOUtils + .toString( + CleanContextSparkJob.class + .getResourceAsStream( + "/eu/dnetlib/dhp/oa/graph/input_clean_context_parameters.json")); + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + parser.parseArgument(args); - Boolean isSparkSessionManaged = Optional - .ofNullable(parser.get("isSparkSessionManaged")) - .map(Boolean::valueOf) - .orElse(Boolean.TRUE); - log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); - String inputPath = parser.get("inputPath"); - log.info("inputPath: {}", inputPath); + String inputPath = parser.get("inputPath"); + log.info("inputPath: {}", inputPath); - String workingPath = parser.get("workingPath"); - log.info("workingPath: {}", workingPath); + String workingPath = parser.get("workingPath"); + log.info("workingPath: {}", workingPath); - String contextId = parser.get("contextId"); - log.info("contextId: {}", contextId); + String contextId = parser.get("contextId"); + log.info("contextId: {}", contextId); - String verifyParam = parser.get("verifyParam"); - log.info("verifyParam: {}", verifyParam); + String verifyParam = parser.get("verifyParam"); + log.info("verifyParam: {}", verifyParam); + String graphTableClassName = parser.get("graphTableClassName"); + log.info("graphTableClassName: {}", graphTableClassName); - String graphTableClassName = parser.get("graphTableClassName"); - log.info("graphTableClassName: {}", graphTableClassName); + Class entityClazz = (Class) Class.forName(graphTableClassName); - Class entityClazz = (Class) Class.forName(graphTableClassName); + SparkConf conf = new SparkConf(); + runWithSparkSession( + conf, + isSparkSessionManaged, + spark -> { + cleanContext(spark, contextId, verifyParam, inputPath, entityClazz, workingPath); + }); + } - SparkConf conf = new SparkConf(); - runWithSparkSession( - conf, - isSparkSessionManaged, - spark -> { + private static void cleanContext(SparkSession spark, String contextId, String verifyParam, + String inputPath, Class entityClazz, String workingPath) { + Dataset res = spark + .read() + .textFile(inputPath) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)); - cleanContext(spark, contextId, verifyParam, inputPath, entityClazz, workingPath); - }); - } + res.map((MapFunction) r -> { + if (!r + .getTitle() + .stream() + .filter( + t -> t + .getQualifier() + .getClassid() + .equalsIgnoreCase(ModelConstants.MAIN_TITLE_QUALIFIER.getClassid())) + .anyMatch(t -> t.getValue().toLowerCase().startsWith(verifyParam.toLowerCase()))) { + return r; + } + r + .setContext( + r + .getContext() + .stream() + .filter( + c -> !c.getId().split("::")[0] + .equalsIgnoreCase(contextId)) + .collect(Collectors.toList())); + return r; + }, Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath); - private static void cleanContext(SparkSession spark, String contextId, String verifyParam, String inputPath, Class entityClazz, String workingPath) { - Dataset res = spark - .read() - .textFile(inputPath) - .map( - (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), - Encoders.bean(entityClazz)); - - res.map((MapFunction) r -> { - if(!r.getTitle() - .stream() - .filter(t -> t.getQualifier().getClassid() - .equalsIgnoreCase(ModelConstants.MAIN_TITLE_QUALIFIER.getClassid())) - .anyMatch(t -> t.getValue().toLowerCase().startsWith(verifyParam.toLowerCase()))){ - return r; - } - r.setContext(r.getContext().stream().filter(c -> !c.getId().split("::")[0] - .equalsIgnoreCase(contextId)).collect(Collectors.toList())); - return r; - } ,Encoders.bean(entityClazz)) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(workingPath); - - spark.read().textFile(workingPath).map((MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), - Encoders.bean(entityClazz)) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(inputPath); - } + spark + .read() + .textFile(workingPath) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, entityClazz), + Encoders.bean(entityClazz)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(inputPath); + } } diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml index 12ba3e5a7..3d4d60d73 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml @@ -15,7 +15,7 @@ shouldCleanContext - false + true if the context have to be cleaned @@ -312,9 +312,9 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.shuffle.partitions=7680 - --inputPath${inputPath}/publication + --inputPath${graphOutputPath}/publication --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Publication - --workingPath${workingDir}/working + --workingPath${workingDir}/working/publication --contextId${contextId} --verifyParam${verifyParam} @@ -339,9 +339,9 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.shuffle.partitions=7680 - --inputPath${graphInputPath}/dataset + --inputPath${graphOutputPath}/dataset --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Dataset - --workingPath${workingDir}/working + --workingPath${workingDir}/working/dataset --contextId${contextId} --verifyParam${verifyParam} @@ -366,9 +366,9 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.shuffle.partitions=7680 - --inputPath${graphInputPath}/otherresearchproduct + --inputPath${graphOutputPath}/otherresearchproduct --graphTableClassNameeu.dnetlib.dhp.schema.oaf.OtherResearchProduct - --workingPath${workingDir}/working + --workingPath${workingDir}/working/otherresearchproduct --contextId${contextId} --verifyParam${verifyParam} @@ -393,9 +393,9 @@ --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} --conf spark.sql.shuffle.partitions=7680 - --inputPath${graphInputPath}/software + --inputPath${graphOutputPath}/software --graphTableClassNameeu.dnetlib.dhp.schema.oaf.Software - --workingPath${workingDir}/working + --workingPath${workingDir}/working/software --contextId${contextId} --verifyParam${verifyParam} @@ -404,6 +404,6 @@ - + \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java index bba814346..472d3781d 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/clean/CleanContextTest.java @@ -1,18 +1,12 @@ + package eu.dnetlib.dhp.oa.graph.clean; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.oa.graph.dump.Constants; -import eu.dnetlib.dhp.oa.graph.dump.DumpJobTest; -import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; -import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.dump.oaf.Instance; -import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; -import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; -import eu.dnetlib.dhp.schema.oaf.Publication; -import eu.dnetlib.dhp.schema.oaf.Software; -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Locale; + import org.apache.commons.io.FileUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; @@ -27,133 +21,280 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Locale; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.dnetlib.dhp.oa.graph.dump.Constants; +import eu.dnetlib.dhp.oa.graph.dump.DumpJobTest; +import eu.dnetlib.dhp.oa.graph.dump.DumpProducts; +import eu.dnetlib.dhp.oa.graph.dump.community.CommunityMap; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.dump.oaf.Instance; +import eu.dnetlib.dhp.schema.dump.oaf.OpenAccessRoute; +import eu.dnetlib.dhp.schema.dump.oaf.graph.GraphResult; +import eu.dnetlib.dhp.schema.oaf.Publication; +import eu.dnetlib.dhp.schema.oaf.Software; +import eu.dnetlib.dhp.schema.oaf.StructuredProperty; public class CleanContextTest { - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - private static SparkSession spark; + private static SparkSession spark; - private static Path workingDir; + private static Path workingDir; - private static final Logger log = LoggerFactory.getLogger(CleanContextTest.class); + private static final Logger log = LoggerFactory.getLogger(CleanContextTest.class); - @BeforeAll - public static void beforeAll() throws IOException { - workingDir = Files.createTempDirectory(DumpJobTest.class.getSimpleName()); - log.info("using work dir {}", workingDir); + @BeforeAll + public static void beforeAll() throws IOException { + workingDir = Files.createTempDirectory(DumpJobTest.class.getSimpleName()); + log.info("using work dir {}", workingDir); - SparkConf conf = new SparkConf(); - conf.setAppName(DumpJobTest.class.getSimpleName()); + SparkConf conf = new SparkConf(); + conf.setAppName(DumpJobTest.class.getSimpleName()); - conf.setMaster("local[*]"); - conf.set("spark.driver.host", "localhost"); - conf.set("hive.metastore.local", "true"); - conf.set("spark.ui.enabled", "false"); - conf.set("spark.sql.warehouse.dir", workingDir.toString()); - conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); + conf.setMaster("local[*]"); + conf.set("spark.driver.host", "localhost"); + conf.set("hive.metastore.local", "true"); + conf.set("spark.ui.enabled", "false"); + conf.set("spark.sql.warehouse.dir", workingDir.toString()); + conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); - spark = SparkSession - .builder() - .appName(DumpJobTest.class.getSimpleName()) - .config(conf) - .getOrCreate(); - } + spark = SparkSession + .builder() + .appName(DumpJobTest.class.getSimpleName()) + .config(conf) + .getOrCreate(); + } - @AfterAll - public static void afterAll() throws IOException { - FileUtils.deleteDirectory(workingDir.toFile()); - spark.stop(); - } + @AfterAll + public static void afterAll() throws IOException { + FileUtils.deleteDirectory(workingDir.toFile()); + spark.stop(); + } - @Test - public void testResultClean() throws Exception { - final String sourcePath = getClass() - .getResource("/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json") - .getPath(); - final String prefix = "gcube "; + @Test + public void testResultClean() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/oa/graph/clean/publication_clean_context.json") + .getPath(); + final String prefix = "gcube "; + spark + .read() + .textFile(sourcePath) + .map( + (MapFunction) r -> OBJECT_MAPPER.readValue(r, Publication.class), + Encoders.bean(Publication.class)) + .write() + .json(workingDir.toString() + "/publication"); - spark.read().textFile(sourcePath).map((MapFunction) r -> OBJECT_MAPPER.readValue(r, Publication.class), Encoders.bean(Publication.class)) - .write().json(workingDir.toString() + "/publication"); + CleanContextSparkJob.main(new String[] { + "--isSparkSessionManaged", Boolean.FALSE.toString(), + "--inputPath", workingDir.toString() + "/publication", + "-graphTableClassName", Publication.class.getCanonicalName(), + "-workingPath", workingDir.toString() + "/working", + "-contextId", "sobigdata", + "-verifyParam", "gCube " + }); + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/publication") + .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); - CleanContextSparkJob.main(new String[] { - "--isSparkSessionManaged", Boolean.FALSE.toString(), - "--inputPath", workingDir.toString() + "/publication", - "-graphTableClassName", Publication.class.getCanonicalName(), - "-workingPath", workingDir.toString() + "/working", - "-contextId","sobigdata", - "-verifyParam","gCube " - }); + Assertions.assertEquals(7, tmp.count()); - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/publication") - .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); + // original result with sobigdata context and gcube as starting string in the main title for the publication + Assertions + .assertEquals( + 0, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::0224aae28af558f21768dbc6439c7a95")) + .collect() + .get(0) + .getContext() + .size()); - Assertions.assertEquals(7, tmp.count()); + // original result with sobigdata context without gcube as starting string in the main title for the publication + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::2", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); - //original result with sobigdata context and gcube as starting string in the main title for the publication - Assertions.assertEquals(0, - tmp.filter(p->p.getId().equals("50|DansKnawCris::0224aae28af558f21768dbc6439c7a95")).collect().get(0).getContext().size()); + // original result with sobigdata context with gcube as starting string in the subtitle + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::2", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + List titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertEquals("subtitle", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context without gcube as starting string in the main title for the publication - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::20c414a3b1c742d5dd3851f1b67df2d9")).collect().get(0).getContext().get(0).getId() ); + // original result with sobigdata context with gcube not as starting string in the main title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "sobigdata::projects::1", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertFalse(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().contains(prefix.trim())); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context with gcube as starting string in the subtitle - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::2",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getContext().get(0).getId() ); - List titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c81248c335f0aa07e06817ece6fa6af")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertEquals("subtitle", titles.get(0).getQualifier().getClassid()); + // original result with sobigdata in context and also other contexts with gcube as starting string for the main + // title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(1, titles.size()); + Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix)); + Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); - //original result with sobigdata context with gcube not as starting string in the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().size()); - Assertions.assertEquals("sobigdata::projects::1",tmp.filter(p->p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::3c9f068ddc930360bec6925488a9a97f")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertFalse(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().contains(prefix.trim()) ); - Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + // original result with multiple main title one of which whith gcube as starting string and with 2 contextes + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(2, titles.size()); + Assertions + .assertTrue( + titles + .stream() + .anyMatch( + t -> t.getQualifier().getClassid().equals("main title") + && t.getValue().toLowerCase().startsWith(prefix))); - //original result with sobigdata in context and also other contexts with gcube as starting string for the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4669a378a73661417182c208e6fdab53")).collect().get(0).getTitle(); - Assertions.assertEquals(1, titles.size()); - Assertions.assertTrue(titles.get(0).getValue().toLowerCase().startsWith(prefix) ); - Assertions.assertEquals("main title", titles.get(0).getQualifier().getClassid()); + // original result without sobigdata in context with gcube as starting string for the main title + Assertions + .assertEquals( + 1, + tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getContext() + .size()); + Assertions + .assertEquals( + "dh-ch", + tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getContext() + .get(0) + .getId()); + titles = tmp + .filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")) + .collect() + .get(0) + .getTitle(); + Assertions.assertEquals(2, titles.size()); - //original result with multiple main title one of which whith gcube as starting string and with 2 contextes - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|DansKnawCris::4a9152e80f860eab99072e921d74a0ff")).collect().get(0).getTitle(); - Assertions.assertEquals(2, titles.size()); - Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix)) ); + Assertions + .assertTrue( + titles + .stream() + .anyMatch( + t -> t.getQualifier().getClassid().equals("main title") + && t.getValue().toLowerCase().startsWith(prefix))); - - //original result without sobigdata in context with gcube as starting string for the main title - Assertions.assertEquals(1, - tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().size()); - Assertions.assertEquals("dh-ch",tmp.filter(p->p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getContext().get(0).getId() ); - titles = tmp.filter(p -> p.getId().equals("50|dedup_wf_001::01e6a28565ca01376b7548e530c6f6e8")).collect().get(0).getTitle(); - Assertions.assertEquals(2, titles.size()); - - Assertions.assertTrue(titles.stream().anyMatch(t -> t.getQualifier().getClassid().equals("main title") && t.getValue().toLowerCase().startsWith(prefix))); - - - } + } } From 6dc68c48e0d8720b875173692eab09d9e46e77cb Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 16:19:04 +0200 Subject: [PATCH 24/83] [EOSCTag] - --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 61 +++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index 2b44275cd..7dc3b5878 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -7,11 +7,18 @@ import eu.dnetlib.dhp.bulktag.community.CommunityConfiguration; import eu.dnetlib.dhp.bulktag.community.CommunityConfigurationFactory; import eu.dnetlib.dhp.bulktag.community.ProtoMap; import eu.dnetlib.dhp.bulktag.community.QueryInformationSystem; +import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.oaf.Result; import eu.dnetlib.dhp.schema.oaf.Software; +import eu.dnetlib.dhp.schema.oaf.StructuredProperty; +import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; +import org.apache.spark.api.java.function.FilterFunction; +import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.Encoders; +import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,6 +32,12 @@ import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; public class SparkEoscTag { private static final Logger log = LoggerFactory.getLogger(SparkEoscTag.class); public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + public final static StructuredProperty EOSC_NOTEBOOK = OafMapperUtils.structuredProperty( + "EOSC::Jupyter Notebook", OafMapperUtils.qualifier("eosc","European Open Science Cloud", + ModelConstants.DNET_SUBJECT_TYPOLOGIES,ModelConstants.DNET_SUBJECT_TYPOLOGIES) + ,OafMapperUtils.dataInfo(false, "propagation", true, false, + OafMapperUtils.qualifier("propagation:subject","Inferred by OpenAIRE", + ModelConstants.DNET_PROVENANCE_ACTIONS,ModelConstants.DNET_PROVENANCE_ACTIONS), "0.9")); public static void main(String[] args) throws Exception { String jsonConfiguration = IOUtils @@ -45,23 +58,63 @@ public class SparkEoscTag { final String inputPath = parser.get("sourcePath"); log.info("inputPath: {}", inputPath); + final String workingPath = parser.get("workingPath"); + log.info("workingPath: {}", workingPath); + SparkConf conf = new SparkConf(); runWithSparkSession( conf, isSparkSessionManaged, spark -> { - execEoscTag(spark, inputPath); + execEoscTag(spark, inputPath, workingPath); }); } - private static void execEoscTag(SparkSession spark, String inputPath) { + private static void execEoscTag(SparkSession spark, String inputPath, String workingPath) { //search for notebook //subject contiene jupyter. //esistono python e notebook nei subject non necessariamente nello stesso - //si cerca fra i prodotto di tipo software - Dataset sw = readPath(spark, inputPath + "/software", Software.class) + //si cerca fra i prodotti di tipo software + + + readPath(spark, inputPath + "/software", Software.class) + .map((MapFunction) s -> { + if(containsSubjectNotebook(s)){ + s.getSubject().add(EOSC_NOTEBOOK); + } + return s; + }, Encoders.bean(Software.class) ) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(workingPath + "/software"); + + readPath(spark, workingPath + "/software" , Software.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(inputPath + "/software"); } + + private static boolean containsSubjectNotebook(Software s) { + if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("jupyter"))) + return true; + if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python") && + sbj.getValue().toLowerCase().contains("notebook"))) + return true; + if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python")) && + s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("notebook"))) + return true; + return false; + } + + private static boolean containsTitleNotebook(Software s) { + if (s.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("jupyter") && + t.getValue().toLowerCase().contains("notebook"))) + return true; + return false; + } } From e0915061c234447edbeb898a4cb726f62b89eb29 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Thu, 21 Apr 2022 16:32:40 +0200 Subject: [PATCH 25/83] [Clean Context] fixed issue in param name --- .../eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml index 3d4d60d73..45e492387 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml @@ -17,6 +17,14 @@ shouldCleanContext true if the context have to be cleaned + + contextId + sobigdata + + + verifyParam + gcube + sparkDriverMemory From 7cb70664721e57c0bd9a8d9b0aaafaf87257b508 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 10:44:17 +0200 Subject: [PATCH 26/83] [EoscTag] first "rough" implementation --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 109 ++++++++++++++---- .../dhp/bulktag/input_eoscTag_parameters.json | 21 ++++ .../dhp/bulktag/oozie_app/workflow.xml | 26 ++++- 3 files changed, 131 insertions(+), 25 deletions(-) create mode 100644 dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index 7dc3b5878..ea7e77e39 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -1,22 +1,13 @@ package eu.dnetlib.dhp.bulktag; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.gson.Gson; import eu.dnetlib.dhp.application.ArgumentApplicationParser; -import eu.dnetlib.dhp.bulktag.community.CommunityConfiguration; -import eu.dnetlib.dhp.bulktag.community.CommunityConfigurationFactory; -import eu.dnetlib.dhp.bulktag.community.ProtoMap; -import eu.dnetlib.dhp.bulktag.community.QueryInformationSystem; import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.Result; -import eu.dnetlib.dhp.schema.oaf.Software; -import eu.dnetlib.dhp.schema.oaf.StructuredProperty; +import eu.dnetlib.dhp.schema.oaf.*; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; -import org.apache.spark.api.java.function.FilterFunction; import org.apache.spark.api.java.function.MapFunction; -import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Encoders; import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; @@ -26,25 +17,30 @@ import org.slf4j.LoggerFactory; import java.util.Optional; import static eu.dnetlib.dhp.PropagationConstant.readPath; -import static eu.dnetlib.dhp.PropagationConstant.removeOutputDir; import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; public class SparkEoscTag { private static final Logger log = LoggerFactory.getLogger(SparkEoscTag.class); public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + public static final Qualifier EOSC_QUALIFIER = OafMapperUtils.qualifier("eosc", + "European Open Science Cloud", + ModelConstants.DNET_SUBJECT_TYPOLOGIES,ModelConstants.DNET_SUBJECT_TYPOLOGIES); + public static final DataInfo EOSC_DATAINFO = OafMapperUtils.dataInfo(false, "propagation", true, false, + OafMapperUtils.qualifier("propagation:subject","Inferred by OpenAIRE", + ModelConstants.DNET_PROVENANCE_ACTIONS,ModelConstants.DNET_PROVENANCE_ACTIONS), "0.9"); public final static StructuredProperty EOSC_NOTEBOOK = OafMapperUtils.structuredProperty( - "EOSC::Jupyter Notebook", OafMapperUtils.qualifier("eosc","European Open Science Cloud", - ModelConstants.DNET_SUBJECT_TYPOLOGIES,ModelConstants.DNET_SUBJECT_TYPOLOGIES) - ,OafMapperUtils.dataInfo(false, "propagation", true, false, - OafMapperUtils.qualifier("propagation:subject","Inferred by OpenAIRE", - ModelConstants.DNET_PROVENANCE_ACTIONS,ModelConstants.DNET_PROVENANCE_ACTIONS), "0.9")); + "EOSC::Jupyter Notebook", EOSC_QUALIFIER,EOSC_DATAINFO); + public final static StructuredProperty EOSC_GALAXY = OafMapperUtils.structuredProperty( + "EOSC::Galaxy Workflow", EOSC_QUALIFIER, EOSC_DATAINFO); + public final static StructuredProperty EOSC_TWITTER = OafMapperUtils.structuredProperty( + "EOSC::Twitter Data", EOSC_QUALIFIER,EOSC_DATAINFO); public static void main(String[] args) throws Exception { String jsonConfiguration = IOUtils .toString( SparkEoscTag.class .getResourceAsStream( - "/eu/dnetlib/dhp/bulktag/input_eosctag_parameters.json")); + "/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json")); final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); parser.parseArgument(args); @@ -73,17 +69,15 @@ public class SparkEoscTag { } private static void execEoscTag(SparkSession spark, String inputPath, String workingPath) { - //search for notebook - //subject contiene jupyter. - //esistono python e notebook nei subject non necessariamente nello stesso - //si cerca fra i prodotti di tipo software - readPath(spark, inputPath + "/software", Software.class) .map((MapFunction) s -> { - if(containsSubjectNotebook(s)){ + if(containsCriteriaNotebook(s)){ s.getSubject().add(EOSC_NOTEBOOK); } + if(containsCriteriaGalaxy(s)){ + s.getSubject().add(EOSC_GALAXY); + } return s; }, Encoders.bean(Software.class) ) .write() @@ -97,9 +91,75 @@ public class SparkEoscTag { .option("compression","gzip") .json(inputPath + "/software"); + readPath(spark, inputPath + "/otherresearchproduct", OtherResearchProduct.class) + .map((MapFunction) orp -> + { + if(containsCriteriaGalaxy(orp)){ + orp.getSubject().add(EOSC_GALAXY); + } + if(containscriteriaTwitter(orp)){ + orp.getSubject().add(EOSC_TWITTER); + } + return orp; + }, Encoders.bean(OtherResearchProduct.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(workingPath + "/otherresearchproduct"); + + readPath(spark, workingPath + "/otherresearchproduct", OtherResearchProduct.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(inputPath + "/otherresearchproduct"); + + readPath(spark, inputPath + "/dataset", Dataset.class) + .map((MapFunction) d -> { + if(containscriteriaTwitter(d)){ + d.getSubject().add(EOSC_TWITTER); + } + return d; + } , Encoders.bean(Dataset.class) ) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(workingPath + "/dataset"); + + readPath(spark, workingPath + "/dataset" , Dataset.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression","gzip") + .json(inputPath + "/dataset"); } - private static boolean containsSubjectNotebook(Software s) { + private static boolean containscriteriaTwitter(Result r) { + if (r.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("twitter") && + t.getValue().toLowerCase().contains("data"))) + return true; + if(r.getDescription().stream().anyMatch(d -> d.getValue().toLowerCase().contains("twitter") && + d.getValue().toLowerCase().contains("data") )) + return true; + if(r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("twitter")) && + r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("data"))) + return true; + return false; + } + + private static boolean containsCriteriaGalaxy(Result r) { + if (r.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("galaxy") && + (t.getValue().toLowerCase().contains("workflow") || t.getValue().toLowerCase().contains("software")))) + return true; + if(r.getDescription().stream().anyMatch(d -> d.getValue().toLowerCase().contains("galaxy") && + (d.getValue().toLowerCase().contains("workflow") || d.getValue().toLowerCase().contains("software")))) + return true; + if(r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("galaxy")) && + (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("workflow"))) || + r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("software"))) + return true; + return false; + } + + private static boolean containsCriteriaNotebook(Software s) { if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("jupyter"))) return true; if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python") && @@ -117,4 +177,5 @@ public class SparkEoscTag { return true; return false; } + } diff --git a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json new file mode 100644 index 000000000..4c25fea01 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json @@ -0,0 +1,21 @@ +[ + { + "paramName":"s", + "paramLongName":"sourcePath", + "paramDescription": "the path of the sequencial file to read", + "paramRequired": true + }, + { + "paramName": "wp", + "paramLongName": "workingPath", + "paramDescription": "the path used to store temporary output files", + "paramRequired": true + }, + { + "paramName": "ssm", + "paramLongName": "isSparkSessionManaged", + "paramDescription": "true if the spark session is managed, false otherwise", + "paramRequired": false + } + +] \ No newline at end of file diff --git a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml index f019f8413..91fca7d61 100644 --- a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml @@ -204,7 +204,31 @@ - + + + + + yarn-cluster + cluster + EOSC_tagging + eu.dnetlib.dhp.bulktag.SparkEoscTag + dhp-enrichment-${projectVersion}.jar + + --num-executors=${sparkExecutorNumber} + --executor-memory=${sparkExecutorMemory} + --executor-cores=${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + + --sourcePath${outputPath} + --workingPath${workingDir}/eoscTag + + + + From aa12429f500e563a114b39650b3d8c13c361d3fa Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Fri, 22 Apr 2022 11:05:08 +0200 Subject: [PATCH 27/83] Modified last intersection since we lost many titles. --- .../doiboost/SparkGenerateDoiBoost.scala | 83 ++++++++----------- 1 file changed, 34 insertions(+), 49 deletions(-) diff --git a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala index 9323c994c..10a5be969 100644 --- a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala +++ b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala @@ -59,52 +59,6 @@ object SparkGenerateDoiBoost { val workingDirPath = parser.get("workingPath") val openaireOrganizationPath = parser.get("openaireOrganizationPath") - val crossrefAggregator = new Aggregator[(String, Publication), Publication, Publication] with Serializable { - override def zero: Publication = new Publication - - override def reduce(b: Publication, a: (String, Publication)): Publication = { - - if (b == null) { - if (a != null && a._2 != null) { - a._2.setId(a._1) - return a._2 - } - } else { - if (a != null && a._2 != null) { - b.mergeFrom(a._2) - b.setId(a._1) - val authors = AuthorMerger.mergeAuthor(b.getAuthor, a._2.getAuthor) - b.setAuthor(authors) - return b - } - } - new Publication - } - - override def merge(b1: Publication, b2: Publication): Publication = { - if (b1 == null) { - if (b2 != null) - return b2 - } else { - if (b2 != null) { - b1.mergeFrom(b2) - val authors = AuthorMerger.mergeAuthor(b1.getAuthor, b2.getAuthor) - b1.setAuthor(authors) - if (b2.getId != null && b2.getId.nonEmpty) - b1.setId(b2.getId) - return b1 - } - } - new Publication - } - - override def finish(reduction: Publication): Publication = reduction - - override def bufferEncoder: Encoder[Publication] = Encoders.kryo[Publication] - - override def outputEncoder: Encoder[Publication] = Encoders.kryo[Publication] - } - implicit val mapEncoderPub: Encoder[Publication] = Encoders.kryo[Publication] implicit val mapEncoderOrg: Encoder[Organization] = Encoders.kryo[Organization] implicit val mapEncoderDataset: Encoder[OafDataset] = Encoders.kryo[OafDataset] @@ -175,12 +129,43 @@ object SparkGenerateDoiBoost { .map(DoiBoostMappingUtil.fixPublication) .map(p => (p.getId, p)) .groupByKey(_._1) - .agg(crossrefAggregator.toColumn) - .map(p => p._2) + .reduceGroups((left, right) => + { + //Check left is not null + if (left != null && left._1 != null) + { + //If right is null then return left + if (right == null || right._2 == null) + left + else { + // Here Left and Right are not null + // So we have to merge + val b1 = left._2 + val b2 = right._2 + b1.mergeFrom(b2) + b1.mergeOAFDataInfo(b2) + val authors = AuthorMerger.mergeAuthor(b1.getAuthor, b2.getAuthor) + b1.setAuthor(authors) + if (b2.getId != null && b2.getId.nonEmpty) + b1.setId(b2.getId) + //Return publication Merged + (b1.getId, b1) + } + } + else { + // Left is Null so we return right + right + } + } + + ) + .filter(s => s!= null && s._2!=null) + .map(s => s._2._2) .write .mode(SaveMode.Overwrite) .save(s"$workingDirPath/doiBoostPublicationFiltered") + val affiliationPath = parser.get("affiliationPath") val paperAffiliationPath = parser.get("paperAffiliationPath") @@ -305,4 +290,4 @@ object SparkGenerateDoiBoost { .save(s"$workingDirPath/doiBoostOrganization") } -} +} \ No newline at end of file From a82ec3aaaf60ea77918f3ff1cfab20538ef6fe7e Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Fri, 22 Apr 2022 11:08:13 +0200 Subject: [PATCH 28/83] code formatter --- .../doiboost/SparkGenerateDoiBoost.scala | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala index 10a5be969..2cbd53097 100644 --- a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala +++ b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/SparkGenerateDoiBoost.scala @@ -129,11 +129,9 @@ object SparkGenerateDoiBoost { .map(DoiBoostMappingUtil.fixPublication) .map(p => (p.getId, p)) .groupByKey(_._1) - .reduceGroups((left, right) => - { + .reduceGroups((left, right) => { //Check left is not null - if (left != null && left._1 != null) - { + if (left != null && left._1 != null) { //If right is null then return left if (right == null || right._2 == null) left @@ -151,21 +149,17 @@ object SparkGenerateDoiBoost { //Return publication Merged (b1.getId, b1) } - } - else { + } else { // Left is Null so we return right right } - } - - ) - .filter(s => s!= null && s._2!=null) + }) + .filter(s => s != null && s._2 != null) .map(s => s._2._2) .write .mode(SaveMode.Overwrite) .save(s"$workingDirPath/doiBoostPublicationFiltered") - val affiliationPath = parser.get("affiliationPath") val paperAffiliationPath = parser.get("paperAffiliationPath") @@ -290,4 +284,4 @@ object SparkGenerateDoiBoost { .save(s"$workingDirPath/doiBoostOrganization") } -} \ No newline at end of file +} From bbb77052d321498f1148ac7371036789b09146fd Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 11:32:57 +0200 Subject: [PATCH 29/83] [EOSCTag] first test --- .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 770 ++++++++++++++++++ 1 file changed, 770 insertions(+) create mode 100644 dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java new file mode 100644 index 000000000..2141e1eac --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -0,0 +1,770 @@ + +package eu.dnetlib.dhp.bulktag; + +import com.fasterxml.jackson.databind.ObjectMapper; +import eu.dnetlib.dhp.schema.oaf.Dataset; +import eu.dnetlib.dhp.schema.oaf.OtherResearchProduct; +import eu.dnetlib.dhp.schema.oaf.Publication; +import eu.dnetlib.dhp.schema.oaf.Software; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.sql.Encoders; +import org.apache.spark.sql.Row; +import org.apache.spark.sql.SparkSession; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static eu.dnetlib.dhp.bulktag.community.TaggingConstants.ZENODO_COMMUNITY_INDICATOR; + +public class EOSCTagJobTest { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public static final String MOCK_IS_LOOK_UP_URL = "BASEURL:8280/is/services/isLookUp"; + + public static final String pathMap = "{ \"author\" : \"$['author'][*]['fullname']\"," + + " \"title\" : \"$['title'][*]['value']\"," + + " \"orcid\" : \"$['author'][*]['pid'][*][?(@['key']=='ORCID')]['value']\"," + + " \"contributor\" : \"$['contributor'][*]['value']\"," + + " \"description\" : \"$['description'][*]['value']\"}"; + + private static SparkSession spark; + + private static Path workingDir; + + private static final Logger log = LoggerFactory.getLogger(EOSCTagJobTest.class); + + private static String taggingConf = ""; + + static { + try { + taggingConf = IOUtils + .toString( + EOSCTagJobTest.class + .getResourceAsStream( + "/eu/dnetlib/dhp/bulktag/communityconfiguration/tagging_conf.xml")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @BeforeAll + public static void beforeAll() throws IOException { + workingDir = Files.createTempDirectory(EOSCTagJobTest.class.getSimpleName()); + log.info("using work dir {}", workingDir); + + SparkConf conf = new SparkConf(); + conf.setAppName(EOSCTagJobTest.class.getSimpleName()); + + conf.setMaster("local[*]"); + conf.set("spark.driver.host", "localhost"); + conf.set("hive.metastore.local", "true"); + conf.set("spark.ui.enabled", "false"); + conf.set("spark.sql.warehouse.dir", workingDir.toString()); + conf.set("hive.metastore.warehouse.dir", workingDir.resolve("warehouse").toString()); + + spark = SparkSession + .builder() + .appName(EOSCTagJobTest.class.getSimpleName()) + .config(conf) + .getOrCreate(); + } + + @AfterAll + public static void afterAll() throws IOException { + FileUtils.deleteDirectory(workingDir.toFile()); + spark.stop(); + } + + @Test + void noUpdatesTest() throws Exception { + final String pathMap = EOSCTagJobTest.pathMap; + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", + getClass().getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/no_updates").getPath(), + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", + "-outputPath", workingDir.toString() + "/dataset", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); + + verificationDataset.createOrReplaceTempView("dataset"); + + String query = "select id, MyT.id community " + + "from dataset " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + Assertions.assertEquals(0, spark.sql(query).count()); + } + + @Test + void bulktagBySubjectNoPreviousContextTest() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject/nocontext") + .getPath(); + final String pathMap = EOSCTagJobTest.pathMap; + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", + "-outputPath", workingDir.toString() + "/dataset", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); + + verificationDataset.createOrReplaceTempView("dataset"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from dataset " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + Assertions.assertEquals(5, spark.sql(query).count()); + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + Assertions + .assertEquals( + 5, idExplodeCommunity.filter("provenance = 'community:subject'").count()); + Assertions + .assertEquals( + 5, + idExplodeCommunity.filter("name = 'Bulktagging for Community - Subject'").count()); + + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'covid-19'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'mes'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'fam'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'aginfra'").count()); + + Assertions + .assertEquals( + 1, + idExplodeCommunity + .filter("id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") + .count()); + Assertions + .assertEquals( + 1, + idExplodeCommunity + .filter( + "community = 'covid-19' and id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") + .count()); + + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter("id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b'") + .count()); + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter( + "(community = 'covid-19' or community = 'aginfra') and id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b'") + .count()); + + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter("id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62'") + .count()); + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter( + "(community = 'mes' or community = 'fam') and id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62'") + .count()); + } + + @Test + void bulktagBySubjectPreviousContextNoProvenanceTest() throws Exception { + final String sourcePath = getClass() + .getResource( + "/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject/contextnoprovenance") + .getPath(); + final String pathMap = EOSCTagJobTest.pathMap; + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", + "-outputPath", workingDir.toString() + "/dataset", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); + + verificationDataset.createOrReplaceTempView("dataset"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance " + + "from dataset " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyT.id = 'covid-19' "; + + Assertions.assertEquals(3, spark.sql(query).count()); + + org.apache.spark.sql.Dataset communityContext = spark.sql(query); + + Assertions + .assertEquals( + 2, + communityContext + .filter("id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") + .count()); + Assertions + .assertEquals( + 1, + communityContext + .filter( + "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and provenance = 'community:subject'") + .count()); + Assertions + .assertEquals( + 1, + communityContext + .filter( + "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and provenance = 'propagation:community:productsthroughsemrel'") + .count()); + + query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " + + "from dataset " + + "lateral view explode (context) as MyT " + + "where size(MyT.datainfo) > 0"; + + Assertions + .assertEquals( + 2, + spark + .sql(query) + .select("datainfosize") + .where( + "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' a" + + "nd community = 'covid-19'") + .collectAsList() + .get(0) + .getInt(0)); + } + + @Test + void bulktagByDatasourceTest() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/bulktag/sample/publication/update_datasource") + .getPath(); + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Publication", + "-outputPath", workingDir.toString() + "/publication", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/publication") + .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Publication.class)); + + verificationDataset.createOrReplaceTempView("publication"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from publication " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + + Assertions.assertEquals(5, idExplodeCommunity.count()); + Assertions + .assertEquals( + 5, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); + Assertions + .assertEquals( + 5, + idExplodeCommunity + .filter("name = 'Bulktagging for Community - Datasource'") + .count()); + + Assertions.assertEquals(3, idExplodeCommunity.filter("community = 'fam'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'aginfra'").count()); + + Assertions + .assertEquals( + 3, + idExplodeCommunity + .filter( + "community = 'fam' and (id = '50|ec_fp7health::000085c89f4b96dc2269bd37edb35306' " + + "or id = '50|ec_fp7health::000b9e61f83f5a4b0c35777b7bccdf38' " + + "or id = '50|ec_fp7health::0010eb63e181e3e91b8b6dc6b3e1c798')") + .count()); + + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter( + "community = 'aginfra' and (id = '50|ec_fp7health::000c8195edd542e4e64ebb32172cbf89' " + + "or id = '50|ec_fp7health::0010eb63e181e3e91b8b6dc6b3e1c798')") + .count()); + } + + @Test + void bulktagByZenodoCommunityTest() throws Exception { + final String sourcePath = getClass() + .getResource( + "/eu/dnetlib/dhp/bulktag/sample/otherresearchproduct/update_zenodocommunity") + .getPath(); + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.OtherResearchProduct", + "-outputPath", workingDir.toString() + "/orp", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/orp") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(OtherResearchProduct.class)); + + verificationDataset.createOrReplaceTempView("orp"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from orp " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + Assertions.assertEquals(8, idExplodeCommunity.count()); + + Assertions + .assertEquals( + 8, idExplodeCommunity.filter("provenance = 'community:zenodocommunity'").count()); + Assertions + .assertEquals( + 8, + idExplodeCommunity.filter("name = 'Bulktagging for Community - Zenodo'").count()); + + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'covid-19'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'aginfra'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'beopen'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'fam'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'mes'").count()); + + Assertions + .assertEquals( + 1, + idExplodeCommunity + .filter( + "id = '50|od______2017::0750a4d0782265873d669520f5e33c07' " + + "and community = 'covid-19'") + .count()); + Assertions + .assertEquals( + 3, + idExplodeCommunity + .filter( + "id = '50|od______2017::1bd97baef19dbd2db3203b112bb83bc5' and " + + "(community = 'aginfra' or community = 'mes' or community = 'fam')") + .count()); + Assertions + .assertEquals( + 1, + idExplodeCommunity + .filter( + "id = '50|od______2017::1e400f1747487fd15998735c41a55c72' " + + "and community = 'beopen'") + .count()); + Assertions + .assertEquals( + 3, + idExplodeCommunity + .filter( + "id = '50|od______2017::210281c5bc1c739a11ccceeeca806396' and " + + "(community = 'beopen' or community = 'fam' or community = 'mes')") + .count()); + + query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " + + "from orp " + + "lateral view explode (context) as MyT " + + "where size(MyT.datainfo) > 0"; + + Assertions + .assertEquals( + 2, + spark + .sql(query) + .select("datainfosize") + .where( + "id = '50|od______2017::210281c5bc1c739a11ccceeeca806396' a" + + "nd community = 'beopen'") + .collectAsList() + .get(0) + .getInt(0)); + + // verify the zenodo community context is not present anymore in the records + query = "select id, MyT.id community " + + "from orp " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD "; + + org.apache.spark.sql.Dataset tmp2 = spark.sql(query); + + Assertions + .assertEquals( + 0, + tmp2 + .select("community") + .where(tmp2.col("community").contains(ZENODO_COMMUNITY_INDICATOR)) + .count()); + } + + @Test + void bulktagBySubjectDatasourceTest() throws Exception { + final String sourcePath = getClass() + .getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject_datasource") + .getPath(); + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", + "-outputPath", workingDir.toString() + "/dataset", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); + + verificationDataset.createOrReplaceTempView("dataset"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from dataset " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + Assertions.assertEquals(7, idExplodeCommunity.count()); + + Assertions + .assertEquals( + 5, idExplodeCommunity.filter("provenance = 'community:subject'").count()); + Assertions + .assertEquals( + 2, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'covid-19'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'fam'").count()); + Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'aginfra'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'mes'").count()); + + query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " + + "from dataset " + + "lateral view explode (context) as MyT " + + "where size(MyT.datainfo) > 0"; + + org.apache.spark.sql.Dataset tmp2 = spark.sql(query); + + Assertions + .assertEquals( + 2, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b' and " + + "community = 'aginfra'") + .collectAsList() + .get(0) + .getInt(0)); + + Assertions + .assertEquals( + 1, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b' and " + + "community = 'covid-19'") + .collectAsList() + .get(0) + .getInt(0)); + + Assertions + .assertEquals( + 2, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and " + + "community = 'fam'") + .collectAsList() + .get(0) + .getInt(0)); + Assertions + .assertEquals( + 2, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and " + + "community = 'covid-19'") + .collectAsList() + .get(0) + .getInt(0)); + + Assertions + .assertEquals( + 1, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62' and " + + "community = 'fam'") + .collectAsList() + .get(0) + .getInt(0)); + Assertions + .assertEquals( + 1, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62' and " + + "community = 'mes'") + .collectAsList() + .get(0) + .getInt(0)); + } + + @Test + void bulktagBySubjectDatasourceZenodoCommunityTest() throws Exception { + + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", getClass().getResource("/eu/dnetlib/dhp/bulktag/sample/software/").getPath(), + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Software", + "-outputPath", workingDir.toString() + "/software", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/software") + .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Software.class)); + + verificationDataset.createOrReplaceTempView("software"); + + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from software " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + Assertions.assertEquals(10, idExplodeCommunity.count()); + + idExplodeCommunity.show(false); + Assertions + .assertEquals( + 3, idExplodeCommunity.filter("provenance = 'community:subject'").count()); + Assertions + .assertEquals( + 3, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); + Assertions + .assertEquals( + 4, idExplodeCommunity.filter("provenance = 'community:zenodocommunity'").count()); + + Assertions.assertEquals(3, idExplodeCommunity.filter("community = 'covid-19'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'dh-ch'").count()); + Assertions.assertEquals(4, idExplodeCommunity.filter("community = 'aginfra'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'dariah'").count()); + Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'fam'").count()); + + Assertions + .assertEquals( + 2, + idExplodeCommunity + .filter( + "provenance = 'community:zenodocommunity' and " + + "id = '50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4' and (" + + "community = 'dh-ch' or community = 'dariah')") + .count()); + + query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " + + "from software " + + "lateral view explode (context) as MyT " + + "where size(MyT.datainfo) > 0"; + + org.apache.spark.sql.Dataset tmp2 = spark.sql(query); + + Assertions + .assertEquals( + 2, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______1582::501b25d420f808c8eddcd9b16e917f11' and " + + "community = 'covid-19'") + .collectAsList() + .get(0) + .getInt(0)); + + Assertions + .assertEquals( + 3, + tmp2 + .select("datainfosize") + .where( + "id = '50|od______1582::581621232a561b7e8b4952b18b8b0e56' and " + + "community = 'aginfra'") + .collectAsList() + .get(0) + .getInt(0)); + } + + @Test + void bulktagDatasourcewithConstraintsTest() throws Exception { + + final String sourcePath = getClass() + .getResource( + "/eu/dnetlib/dhp/bulktag/sample/dataset/update_datasourcewithconstraints") + .getPath(); + SparkBulkTagJob + .main( + new String[] { + "-isTest", Boolean.TRUE.toString(), + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", sourcePath, + "-taggingConf", taggingConf, + "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", + "-outputPath", workingDir.toString() + "/dataset", + "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, + "-pathMap", pathMap + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, tmp.count()); + org.apache.spark.sql.Dataset verificationDataset = spark + .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); + + verificationDataset.createOrReplaceTempView("dataset"); + String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " + + "from dataset " + + "lateral view explode(context) c as MyT " + + "lateral view explode(MyT.datainfo) d as MyD " + + "where MyD.inferenceprovenance = 'bulktagging'"; + + org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); + + idExplodeCommunity.show(false); + Assertions.assertEquals(3, idExplodeCommunity.count()); + + Assertions + .assertEquals( + 3, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); + } +} From 19d90658fc74006408d76269dc332d7205aaeedd Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 15:41:23 +0200 Subject: [PATCH 30/83] [Clean Context] added description to parameters --- .../eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml index 45e492387..0cf6cdd05 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/clean/oozie_app/workflow.xml @@ -20,10 +20,15 @@ contextId sobigdata + It is the context id that should be removed from the result if the condition is matched. + Now it is just sobigdata. In a futere implementation I plan to have the contextId as value in a json + where to specify also the constraints that should be verified to remove the context from the result verifyParam gcube + It is the constrint to be verified. This time is hardcoded as gcube and it is searched for in + the title. If title starts with gcube than the context sobigdata will be removed by the result if present From 27c85e901a9162a1c171f521f989f8f77c7c1395 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 17:38:10 +0200 Subject: [PATCH 31/83] [EOSCTag] added resources and finalized test for Jupyter Notebook tagging --- .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 751 ++---------------- .../eosctag/galaxy/dataset/dataset_10.json | 10 + .../otherresearchproduct_10.json | 10 + .../eosctag/galaxy/software/software_10.json | 10 + .../eosctag/jupyter/dataset/dataset_10.json | 10 + .../otherresearchproduct_10.json | 10 + .../eosctag/jupyter/software/software_10.json | 10 + .../eosctag/twitter/dataset/dataset_10.json | 10 + .../otherresearchproduct_10.json | 10 + .../eosctag/twitter/software/software_10.json | 10 + 10 files changed, 165 insertions(+), 676 deletions(-) create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/dataset/dataset_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct/otherresearchproduct_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json create mode 100644 dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java index 2141e1eac..82ac9f751 100644 --- a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -2,15 +2,13 @@ package eu.dnetlib.dhp.bulktag; import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.oaf.Dataset; -import eu.dnetlib.dhp.schema.oaf.OtherResearchProduct; -import eu.dnetlib.dhp.schema.oaf.Publication; -import eu.dnetlib.dhp.schema.oaf.Software; +import eu.dnetlib.dhp.schema.oaf.*; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; +import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.sql.Encoders; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; @@ -24,6 +22,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.List; import static eu.dnetlib.dhp.bulktag.community.TaggingConstants.ZENODO_COMMUNITY_INDICATOR; @@ -31,13 +30,7 @@ public class EOSCTagJobTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - public static final String MOCK_IS_LOOK_UP_URL = "BASEURL:8280/is/services/isLookUp"; - public static final String pathMap = "{ \"author\" : \"$['author'][*]['fullname']\"," - + " \"title\" : \"$['title'][*]['value']\"," - + " \"orcid\" : \"$['author'][*]['pid'][*][?(@['key']=='ORCID')]['value']\"," - + " \"contributor\" : \"$['contributor'][*]['value']\"," - + " \"description\" : \"$['description'][*]['value']\"}"; private static SparkSession spark; @@ -45,19 +38,6 @@ public class EOSCTagJobTest { private static final Logger log = LoggerFactory.getLogger(EOSCTagJobTest.class); - private static String taggingConf = ""; - - static { - try { - taggingConf = IOUtils - .toString( - EOSCTagJobTest.class - .getResourceAsStream( - "/eu/dnetlib/dhp/bulktag/communityconfiguration/tagging_conf.xml")); - } catch (IOException e) { - e.printStackTrace(); - } - } @BeforeAll public static void beforeAll() throws IOException { @@ -88,683 +68,102 @@ public class EOSCTagJobTest { } @Test - void noUpdatesTest() throws Exception { - final String pathMap = EOSCTagJobTest.pathMap; - SparkBulkTagJob + void jupyterUpdatesTest() throws Exception { + + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/software").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), Encoders.bean(Software.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/software"); + + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/dataset").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), Encoders.bean(Dataset.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/dataset"); + + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, OtherResearchProduct.class), Encoders.bean(OtherResearchProduct.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/otherresearchproduct"); + + SparkEoscTag .main( new String[] { - "-isTest", Boolean.TRUE.toString(), "-isSparkSessionManaged", Boolean.FALSE.toString(), "-sourcePath", - getClass().getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/no_updates").getPath(), - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", - "-outputPath", workingDir.toString() + "/dataset", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); + workingDir.toString() + "/input", + "-workingPath", workingDir.toString() + "/working" - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); - - verificationDataset.createOrReplaceTempView("dataset"); - - String query = "select id, MyT.id community " - + "from dataset " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - Assertions.assertEquals(0, spark.sql(query).count()); - } - - @Test - void bulktagBySubjectNoPreviousContextTest() throws Exception { - final String sourcePath = getClass() - .getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject/nocontext") - .getPath(); - final String pathMap = EOSCTagJobTest.pathMap; - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", - "-outputPath", workingDir.toString() + "/dataset", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); - - verificationDataset.createOrReplaceTempView("dataset"); - - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from dataset " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - Assertions.assertEquals(5, spark.sql(query).count()); - - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - Assertions - .assertEquals( - 5, idExplodeCommunity.filter("provenance = 'community:subject'").count()); - Assertions - .assertEquals( - 5, - idExplodeCommunity.filter("name = 'Bulktagging for Community - Subject'").count()); - - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'covid-19'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'mes'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'fam'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'aginfra'").count()); - - Assertions - .assertEquals( - 1, - idExplodeCommunity - .filter("id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") - .count()); - Assertions - .assertEquals( - 1, - idExplodeCommunity - .filter( - "community = 'covid-19' and id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") - .count()); - - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter("id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b'") - .count()); - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter( - "(community = 'covid-19' or community = 'aginfra') and id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b'") - .count()); - - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter("id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62'") - .count()); - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter( - "(community = 'mes' or community = 'fam') and id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62'") - .count()); - } - - @Test - void bulktagBySubjectPreviousContextNoProvenanceTest() throws Exception { - final String sourcePath = getClass() - .getResource( - "/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject/contextnoprovenance") - .getPath(); - final String pathMap = EOSCTagJobTest.pathMap; - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", - "-outputPath", workingDir.toString() + "/dataset", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); - - verificationDataset.createOrReplaceTempView("dataset"); - - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance " - + "from dataset " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyT.id = 'covid-19' "; - - Assertions.assertEquals(3, spark.sql(query).count()); - - org.apache.spark.sql.Dataset communityContext = spark.sql(query); - - Assertions - .assertEquals( - 2, - communityContext - .filter("id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529'") - .count()); - Assertions - .assertEquals( - 1, - communityContext - .filter( - "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and provenance = 'community:subject'") - .count()); - Assertions - .assertEquals( - 1, - communityContext - .filter( - "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and provenance = 'propagation:community:productsthroughsemrel'") - .count()); - - query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " - + "from dataset " - + "lateral view explode (context) as MyT " - + "where size(MyT.datainfo) > 0"; - - Assertions - .assertEquals( - 2, - spark - .sql(query) - .select("datainfosize") - .where( - "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' a" - + "nd community = 'covid-19'") - .collectAsList() - .get(0) - .getInt(0)); - } - - @Test - void bulktagByDatasourceTest() throws Exception { - final String sourcePath = getClass() - .getResource("/eu/dnetlib/dhp/bulktag/sample/publication/update_datasource") - .getPath(); - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Publication", - "-outputPath", workingDir.toString() + "/publication", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/publication") - .map(item -> OBJECT_MAPPER.readValue(item, Publication.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Publication.class)); - - verificationDataset.createOrReplaceTempView("publication"); - - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from publication " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - - Assertions.assertEquals(5, idExplodeCommunity.count()); - Assertions - .assertEquals( - 5, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); - Assertions - .assertEquals( - 5, - idExplodeCommunity - .filter("name = 'Bulktagging for Community - Datasource'") - .count()); - - Assertions.assertEquals(3, idExplodeCommunity.filter("community = 'fam'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'aginfra'").count()); - - Assertions - .assertEquals( - 3, - idExplodeCommunity - .filter( - "community = 'fam' and (id = '50|ec_fp7health::000085c89f4b96dc2269bd37edb35306' " - + "or id = '50|ec_fp7health::000b9e61f83f5a4b0c35777b7bccdf38' " - + "or id = '50|ec_fp7health::0010eb63e181e3e91b8b6dc6b3e1c798')") - .count()); - - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter( - "community = 'aginfra' and (id = '50|ec_fp7health::000c8195edd542e4e64ebb32172cbf89' " - + "or id = '50|ec_fp7health::0010eb63e181e3e91b8b6dc6b3e1c798')") - .count()); - } - - @Test - void bulktagByZenodoCommunityTest() throws Exception { - final String sourcePath = getClass() - .getResource( - "/eu/dnetlib/dhp/bulktag/sample/otherresearchproduct/update_zenodocommunity") - .getPath(); - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.OtherResearchProduct", - "-outputPath", workingDir.toString() + "/orp", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/orp") - .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(OtherResearchProduct.class)); - - verificationDataset.createOrReplaceTempView("orp"); - - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from orp " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - Assertions.assertEquals(8, idExplodeCommunity.count()); - - Assertions - .assertEquals( - 8, idExplodeCommunity.filter("provenance = 'community:zenodocommunity'").count()); - Assertions - .assertEquals( - 8, - idExplodeCommunity.filter("name = 'Bulktagging for Community - Zenodo'").count()); - - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'covid-19'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'aginfra'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'beopen'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'fam'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'mes'").count()); - - Assertions - .assertEquals( - 1, - idExplodeCommunity - .filter( - "id = '50|od______2017::0750a4d0782265873d669520f5e33c07' " - + "and community = 'covid-19'") - .count()); - Assertions - .assertEquals( - 3, - idExplodeCommunity - .filter( - "id = '50|od______2017::1bd97baef19dbd2db3203b112bb83bc5' and " - + "(community = 'aginfra' or community = 'mes' or community = 'fam')") - .count()); - Assertions - .assertEquals( - 1, - idExplodeCommunity - .filter( - "id = '50|od______2017::1e400f1747487fd15998735c41a55c72' " - + "and community = 'beopen'") - .count()); - Assertions - .assertEquals( - 3, - idExplodeCommunity - .filter( - "id = '50|od______2017::210281c5bc1c739a11ccceeeca806396' and " - + "(community = 'beopen' or community = 'fam' or community = 'mes')") - .count()); - - query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " - + "from orp " - + "lateral view explode (context) as MyT " - + "where size(MyT.datainfo) > 0"; - - Assertions - .assertEquals( - 2, - spark - .sql(query) - .select("datainfosize") - .where( - "id = '50|od______2017::210281c5bc1c739a11ccceeeca806396' a" - + "nd community = 'beopen'") - .collectAsList() - .get(0) - .getInt(0)); - - // verify the zenodo community context is not present anymore in the records - query = "select id, MyT.id community " - + "from orp " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD "; - - org.apache.spark.sql.Dataset tmp2 = spark.sql(query); - - Assertions - .assertEquals( - 0, - tmp2 - .select("community") - .where(tmp2.col("community").contains(ZENODO_COMMUNITY_INDICATOR)) - .count()); - } - - @Test - void bulktagBySubjectDatasourceTest() throws Exception { - final String sourcePath = getClass() - .getResource("/eu/dnetlib/dhp/bulktag/sample/dataset/update_subject_datasource") - .getPath(); - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", - "-outputPath", workingDir.toString() + "/dataset", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); - - verificationDataset.createOrReplaceTempView("dataset"); - - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from dataset " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - Assertions.assertEquals(7, idExplodeCommunity.count()); - - Assertions - .assertEquals( - 5, idExplodeCommunity.filter("provenance = 'community:subject'").count()); - Assertions - .assertEquals( - 2, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'covid-19'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'fam'").count()); - Assertions.assertEquals(2, idExplodeCommunity.filter("community = 'aginfra'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'mes'").count()); - - query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " - + "from dataset " - + "lateral view explode (context) as MyT " - + "where size(MyT.datainfo) > 0"; - - org.apache.spark.sql.Dataset tmp2 = spark.sql(query); - - Assertions - .assertEquals( - 2, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b' and " - + "community = 'aginfra'") - .collectAsList() - .get(0) - .getInt(0)); - - Assertions - .assertEquals( - 1, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b' and " - + "community = 'covid-19'") - .collectAsList() - .get(0) - .getInt(0)); - - Assertions - .assertEquals( - 2, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and " - + "community = 'fam'") - .collectAsList() - .get(0) - .getInt(0)); - Assertions - .assertEquals( - 2, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529' and " - + "community = 'covid-19'") - .collectAsList() - .get(0) - .getInt(0)); - - Assertions - .assertEquals( - 1, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62' and " - + "community = 'fam'") - .collectAsList() - .get(0) - .getInt(0)); - Assertions - .assertEquals( - 1, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______3989::0f89464c4ac4c398fe0c71433b175a62' and " - + "community = 'mes'") - .collectAsList() - .get(0) - .getInt(0)); - } - - @Test - void bulktagBySubjectDatasourceZenodoCommunityTest() throws Exception { - - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", getClass().getResource("/eu/dnetlib/dhp/bulktag/sample/software/").getPath(), - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Software", - "-outputPath", workingDir.toString() + "/software", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap }); final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); JavaRDD tmp = sc - .textFile(workingDir.toString() + "/software") + .textFile(workingDir.toString() + "/input/software") .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Software.class)); - verificationDataset.createOrReplaceTempView("software"); + Assertions.assertEquals(4, tmp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from software " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; + Assertions.assertEquals(2, tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - Assertions.assertEquals(10, idExplodeCommunity.count()); - idExplodeCommunity.show(false); - Assertions - .assertEquals( - 3, idExplodeCommunity.filter("provenance = 'community:subject'").count()); - Assertions - .assertEquals( - 3, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); - Assertions - .assertEquals( - 4, idExplodeCommunity.filter("provenance = 'community:zenodocommunity'").count()); + Assertions.assertEquals(5, tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() + .get(0).getSubject().size()); + Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions.assertEquals(3, idExplodeCommunity.filter("community = 'covid-19'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'dh-ch'").count()); - Assertions.assertEquals(4, idExplodeCommunity.filter("community = 'aginfra'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'dariah'").count()); - Assertions.assertEquals(1, idExplodeCommunity.filter("community = 'fam'").count()); + Assertions.assertEquals(9, tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions - .assertEquals( - 2, - idExplodeCommunity - .filter( - "provenance = 'community:zenodocommunity' and " - + "id = '50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4' and (" - + "community = 'dh-ch' or community = 'dariah')") - .count()); + Assertions.assertEquals(5, tmp.filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")).collect() + .get(0).getSubject().size()); + Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - query = "select id, MyT.id community, size(MyT.datainfo) datainfosize " - + "from software " - + "lateral view explode (context) as MyT " - + "where size(MyT.datainfo) > 0"; + Assertions.assertEquals(9, tmp.filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - org.apache.spark.sql.Dataset tmp2 = spark.sql(query); + List subjects = tmp.filter(sw -> sw.getId().equals("50|od______1582::6e7a9b21a2feef45673890432af34244")).collect() + .get(0).getSubject(); + Assertions.assertEquals(8, subjects.size()); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("jupyter"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("Modeling and Simulation"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("structure granulaire"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("algorithme"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("simulation numérique"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("flux de gaz"))); + Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("flux de liquide"))); - Assertions - .assertEquals( - 2, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______1582::501b25d420f808c8eddcd9b16e917f11' and " - + "community = 'covid-19'") - .collectAsList() - .get(0) - .getInt(0)); - Assertions - .assertEquals( - 3, - tmp2 - .select("datainfosize") - .where( - "id = '50|od______1582::581621232a561b7e8b4952b18b8b0e56' and " - + "community = 'aginfra'") - .collectAsList() - .get(0) - .getInt(0)); + Assertions.assertEquals(10, sc + .textFile(workingDir.toString() + "/input/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)).count()); + + Assertions.assertEquals(0, sc + .textFile(workingDir.toString() + "/input/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)).filter(ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); + + + Assertions.assertEquals(10, sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)).count()); + + Assertions.assertEquals(0, sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)).filter(ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); } - @Test - void bulktagDatasourcewithConstraintsTest() throws Exception { - final String sourcePath = getClass() - .getResource( - "/eu/dnetlib/dhp/bulktag/sample/dataset/update_datasourcewithconstraints") - .getPath(); - SparkBulkTagJob - .main( - new String[] { - "-isTest", Boolean.TRUE.toString(), - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", sourcePath, - "-taggingConf", taggingConf, - "-resultTableName", "eu.dnetlib.dhp.schema.oaf.Dataset", - "-outputPath", workingDir.toString() + "/dataset", - "-isLookUpUrl", MOCK_IS_LOOK_UP_URL, - "-pathMap", pathMap - }); - - final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); - - JavaRDD tmp = sc - .textFile(workingDir.toString() + "/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - - Assertions.assertEquals(10, tmp.count()); - org.apache.spark.sql.Dataset verificationDataset = spark - .createDataset(tmp.rdd(), Encoders.bean(Dataset.class)); - - verificationDataset.createOrReplaceTempView("dataset"); - String query = "select id, MyT.id community, MyD.provenanceaction.classid provenance, MyD.provenanceaction.classname name " - + "from dataset " - + "lateral view explode(context) c as MyT " - + "lateral view explode(MyT.datainfo) d as MyD " - + "where MyD.inferenceprovenance = 'bulktagging'"; - - org.apache.spark.sql.Dataset idExplodeCommunity = spark.sql(query); - - idExplodeCommunity.show(false); - Assertions.assertEquals(3, idExplodeCommunity.count()); - - Assertions - .assertEquals( - 3, idExplodeCommunity.filter("provenance = 'community:datasource'").count()); - } } diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json new file mode 100644 index 000000000..0243a4e3d --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868909,"id":"50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529","originalId":["od______3989::02dd5d2c222191b0b9bd4f33c8e96529"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[{"value":"10.4185/RLCS-2018-1243","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2020-03-03T13:05:26.091Z","dateoftransformation":"2020-03-03T13:06:53.161Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.091Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/562","datestamp":"2018-01-23T15:06:07Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Gallardo-Camacho, Jorge","name":"Jorge","surname":"Gallardo-Camacho","rank":1,"pid":null,"affiliation":null},{"fullname":"Trujillo Fernández, José Ramón","name":"José Ramón","surname":"Trujillo Fernández","rank":2,"pid":null,"affiliation":null},{"fullname":"Jorge Alonso, Ana","name":"Ana","surname":"Jorge Alonso","rank":3,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"yihadismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"viralidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vídeo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"propaganda","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"jihadism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"virality","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"video","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5903 Ideologías Políticas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6310.13 Terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"El individualismo como estrategia","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Individualism as an improvised strategy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Se analiza como el Yihadismo distribuye su mensaje propaganístico en You Tube.\nUniversidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"MediaLab - UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/562"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868954,"id":"50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b","originalId":["od______3989::05d8c751462f9bb8d2b06956dfbc5c7b"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.079Z","dateoftransformation":"2020-03-03T13:06:53.239Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.079Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/227","datestamp":"2017-11-15T16:29:55Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Rico Pérez, Marta","name":"Marta","surname":"Rico Pérez","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Eventos deportivos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Retos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos, celebrado en la Universidad Camilo José Cela.\n\n\n\nDerivado del proyecto de investigación \"La situación de los eventos deportivos en España a través de su estructuras y de sus herramientas\", tiene como finalidad conocer la situación de los eventos deportivos en España. Se realizó un estudio descriptivo holístico en el que se investigaron elementos culturales, el perfil de los recursos humanos, la estructura de los comités, entre otras.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/227"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869097,"id":"50|od______3989::0f89464c4ac4c398fe0c71433b175a62","originalId":["od______3989::0f89464c4ac4c398fe0c71433b175a62"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.069Z","dateoftransformation":"2020-03-03T13:06:53.54Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.069Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/802","datestamp":"2018-11-14T15:30:47Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Actividades deportivas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Impacto físico","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigaciones en Ciencias de la Actividad Física y del Deporte CCAFD - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Blanca Romero, investigadora y docente de Ciencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela, describe dos de las líneas de investigación que se han desarrollado en el departamento CCAFD de UCJC: el impacto físico de las diferentes actividades deportivas y los métodos de recuperación más eficaces tras el ejercicio físico.\nBlanca también destaca la importancia en el ámbito de la salud los estudios en Ciencias de la Actividad Física y del Deporte.\nCiencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/802"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869215,"id":"50|od______3989::1729c3988199b95d1d566851af7d3c55","originalId":["od______3989::1729c3988199b95d1d566851af7d3c55"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.653Z","dateoftransformation":"2020-03-03T13:06:53.764Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.653Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/801","datestamp":"2018-11-14T15:19:38Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Prevención","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Hidratación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportistas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Electrolitos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportes de resistencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"La importancia de la hidratación en competiciones resistencia, por Juan del Coso","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Juan del Coso, investigador y profesor en el Grado en Ciencias de la Actividad Física y del Deporte UCJC, presenta el proyecto de investigación que ha realizado el departamento CCAFD de UCJC: la prevención de desequilibrios de agua y electrolitos que se dan en los deportes de resistencia para que los deportistas realicen su actividad de una manera más segura.\nMás información: http://www.ucjc.edu/2016/03/investiga...\nUniversidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Grado en Ciencias de la Actividad Física y del Deporte UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/801"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869487,"id":"50|od______3989::2e3f34ce90520fae350a7e1148d7dcea","originalId":["od______3989::2e3f34ce90520fae350a7e1148d7dcea"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:54.218Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/800","datestamp":"2018-11-14T13:43:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Cafeína","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Efectos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alto rendimiento","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Competiciones","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Beneficios","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Efectos positivos y negativos del uso de la cafeína en el deporte","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) sobre la cafeína y sus efectos cuando se realiza deporte. https://www.ucjc.edu/2016/08/la-bbc-s...\n\nJuan Del Coso, director del Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela, nos describe cómo está siendo la investigación que desarrolla con deportistas de alto rendimiento y el consumo de cafeína.\n\n\"Nuestra investigación se enmarca dentro del campo de la fisiología del ejercicio y el objetivo que tenemos es investigar los efectos que tiene la cafeína en los deportistas, principalmente saber si es una ayuda ergogénica en la mayor parte de los deportes, pero también conocer qué perjuicios existen para aquellos deportistas que la utilizan para incrementar el rendimiento deportivo\", explica Del Coso.\n\nY es que los datos son muy llamativos: tres de cada cuatro deportistas de alto rendimiento utilizan la cafeína antes de la competición y muchas veces se utiliza sin saber los perjuicios que puede tener para el deportista. \"Lo que estamos investigando es cómo una sustancia, que te puede hacer rendir mejor, cómo puede afectar negativamente cuando termina una competición\".\n\nPero esta investigación no sólo puede extraer conclusiones interesantes y útiles para los deportistas profesionales, \"investigando el deporte de alto rendimiento podemos conocer los beneficios y perjuicios de la cafeína que también afectarían al deportista amateur y hacer un deporte en general más seguro\".\n\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/800"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869498,"id":"50|od______3989::2f4f3c820c450bd08dac08d07cc82dcf","originalId":["od______3989::2f4f3c820c450bd08dac08d07cc82dcf"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.806Z","dateoftransformation":"2020-03-03T13:06:54.229Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.806Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/797","datestamp":"2018-11-14T12:12:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Cuesta Cano, Laura","name":"Laura","surname":"Cuesta Cano","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marketing digital","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Medios sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marcas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Empresas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Emprendedores","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"II Liga de Debate CICAE - UCJC","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6114.13 Marketing","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Laura Cuesta - Liga de Debate CICAE - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Laura Cuesta, profesora en la Universidad Camilo José Cela (UCJC) y Especialista en Marketing Digital y Medios Sociales para marcas y emprendedores. \n\nEn esta ocasión, Laura Cuesta, nos explica el significado de redes sociales y nos habla sobre el uso que le dan los usuarios.\n\nII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la segunda edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/797"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870582,"id":"50|od______3989::752fd0b2bbac1ea1cc50e52fd46eb663","originalId":["od______3989::752fd0b2bbac1ea1cc50e52fd46eb663"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.561Z","dateoftransformation":"2020-03-03T13:06:55.716Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.561Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/798","datestamp":"2018-11-14T12:57:26Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Psicología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcohol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Dependencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcoholismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Realidad virtual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Psicología conductual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Intervención basada en realidad virtual sobre la dependencia del alcohol","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) con tecnología aplicada al abandono de la dependencia del alcohol. \nRosa Jurado, profesora e investigadora de UCJC https://www.ucjc.edu/, explica cómo se conjuga el alcoholismo con la realidad virtual. \"Mi investigación consiste en desarrollar una técnica de intervención o rehabilitación que tiene como propósito fomentar la capacidad de inhibición para que las personas que tienen dependencia del alcohol sean capaces de controlar su conducta de aproximación hacia aquello que tiene que ver con el consumo de alcohol\".\n\nEn esta investigación, liderada por la Universidad Camilo José Cela, están participando, el Instituto de Investigación Biomédica del Hospital 12 de Octubre y la Universidad Politécnica de Madrid, con el CeDint. \"En nuestro equipo de investigación pensamos que, además del deseo de consumo, existen una carencia clara de capacidad de control inhibitorio en este tipo de personas\", destaca Rosa Jurado.\n\nLa realidad virtual sirve, según explica Gabriel Rubio, jefe de Psiquiatría del Hospital 12 de Octubre, \"para dar un paso más, para ver cómo reacciona un sujeto en un ambiente que no es el real, pero se parece mucho al real\". El objetivo final de estas acciones es \"mejorar la capacidad del individuo para poner en marcha mecanismos de inhibición conductual, para que el sujeto sea capaz de decir que no\".\n\nY no acaba ahí el proceso. La fase final del tratamiento se enfoca en que el paciente \"sea capaz de reconstruir su vida\" a través de programas de entrenamiento de habilidades sociales, asertividad, familias... \"Juntando todas las áreas de intervención, la abstinencia se mantiene mucho más tiempo y las recaídas disminuyen\".","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/798"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870750,"id":"50|od______3989::7fcbe3a03280663cddebfd3cb9203177","originalId":["od______3989::7fcbe3a03280663cddebfd3cb9203177"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.652Z","dateoftransformation":"2020-03-03T13:06:55.95Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.652Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/796","datestamp":"2018-11-05T13:36:54Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Redes sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"III Liga de Debate CICAE","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Instantaneidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información periodística","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Fake news","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Jorge Gallardo - Liga de Debate CICAE","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Jorge Gallardo, profesor de Derecho en la Universidad Camilo José Cela (UCJC), Doctor en Comunicación Audiovisual y MBA en Empresas Audiovisuales. Subdirector de Espejo Público en Antena 3 Noticias. \n\nEn esta ocasión, Jorge Gallardo habla sobre las redes sociales, cómo han transformado la manera en la que nos comunicamos y nos informamos. \n\nIII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la tercera edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/796"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872001,"id":"50|od______3989::d791339867bec6d3eb2104deeb4e4961","originalId":["od______3989::d791339867bec6d3eb2104deeb4e4961"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.586Z","dateoftransformation":"2020-03-03T13:06:57.721Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.586Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/645","datestamp":"2018-04-12T07:59:27Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Transferencia de Conocimiento e Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Tecnología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"UCJC Open Science Day 2018","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"El UCJC Open Science Day tiene como objetivo mostrar las actividades de investigación llevadas a cabo por investigadores de la Universidad Camilo José Cela (UCJC) a todos los miembros de la UCJC.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/645"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json new file mode 100644 index 000000000..ae580eab9 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Treino de Jovens","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Iniciação Desportiva","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424163,"id":"50|od______2017::225a8382b6a3db76fba97c2dc146f937","originalId":["od______2017::225a8382b6a3db76fba97c2dc146f937"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:26:56.251Z","dateoftransformation":"2019-11-30T04:20:01.127Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:26:56.251Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/3290","datestamp":"2016-07-14T02:01:33Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Millenium","name":null,"surname":null,"rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Referências bibliográficas ao estilo APA","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/3290"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424299,"id":"50|od______2017::241d59362b075000e89d276e7bb6badc","originalId":["od______2017::241d59362b075000e89d276e7bb6badc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-09-06T04:39:29.25Z","dateoftransformation":"2019-11-30T04:20:01.631Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-09-06T04:39:29.25Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1190","datestamp":"2019-09-04T02:00:41Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Menezes, Luís","name":"Luís","surname":"Menezes","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, António","name":"António","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Martins, Ana Patrícia","name":"Ana Patrícia","surname":"Martins","rank":3,"pid":null,"affiliation":null},{"fullname":"Rodrigues, Cátia","name":"Cátia","surname":"Rodrigues","rank":4,"pid":null,"affiliation":null},{"fullname":"Gomes, Helena","name":"Helena","surname":"Gomes","rank":5,"pid":null,"affiliation":null},{"fullname":"Novo, Sónia","name":"Sónia","surname":"Novo","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Matemática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Capacidades tranversais","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Penso, comunico, resolvo","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Esta brochura destina-se a alunos do ensino básico (1.º a 9.º anos), tendo como objetivo fornecer informação sobre as capacidades transversais que o novo Programa de Matemática português (2007) veio destacar.\nEscola Superior de Educação de Viseu","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"ESEV","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/fake"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1190"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424626,"id":"50|od______2017::28fe553056801d4a764edac6bec334ec","originalId":["od______2017::28fe553056801d4a764edac6bec334ec"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:03.799Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5432","datestamp":"2019-02-23T03:01:24Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":3,"pid":null,"affiliation":null},{"fullname":"Jopp, Daniela","name":"Daniela","surname":"Jopp","rank":4,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Europe","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians in Europe","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"In the last decade, the number of centenarians world- wide has increased. Following this tendency, the number of centenarian studies has also exponentially augmented. Given the complexity to conduct research with centenarians, elementary information on this specific age group remains unknown at a European level. This paper compares basic characteristics of centenarians from 32 European coun- tries based on Census 2011. Results revealed that France is the country with higher ratio of centenarians, followed by Italy and Greece; on the other hand Croatia, Romania and Bulgaria present the lower ratio. The distribution accord- ing to gender is similar for all countries, with higher ratio of women reaching 100 years old. Different patterns of education level were found on countries where this infor- mation was reliable: Portugal and Greece are the countries with lower levels of education, with more than half without formal education; Finland, UK and Iceland are the countries with higher levels of education, with all centenarians having at least lower secondary education. Analysing the residence situation (living in the community or living in the institu- tion), Romania, Bulgaria, Lithuania, Greece and Latvia are the countries that present higher percentages of centenarians living in the community; Iceland is the country with lower percentage of centenarians living in the community. A posi- tive correlation between the number of centenarians and the percentage of Total Health Expenditure of GDP is observed. This study provides important information about the current profile of European centenarians, which is compared to gen- eral information on the centenarian population from EUA and Asia.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5432"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424730,"id":"50|od______2017::2a777b5c11f070ece546d75162047179","originalId":["od______2017::2a777b5c11f070ece546d75162047179"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:04.285Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5428","datestamp":"2019-02-23T03:01:30Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":3,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"100 years old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Survival after 100 years of age in Portuguese centenarians","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The group of individuals aged 80 and over is growing faster than other segment of the population, and within this group the number of centenarians has risen exponentially worldwide. This phenomena lead to an increasing number of centenarian studies, improving the knowledge about this population, validating the idea of heterogeneity that char- acterizes this group. However, the factors influencing their aging survival remains understudied. The present study aims to identify factors associated with survival after 100 years old in a sample of Portuguese centenarians. After being included in a population-based study on centenarians (PT100–Oporto Centenarian Study), each participant was assessed by a tel- ephone interview every 6 months in order to assess his/her health condition. Follow-up was considered as the time (in months) between 100th birthday and death or the last tel- ephone contact. Survival analysis was performed to iden- tify factors associated with survival after 100 years old. Sociological and medical factors were considered. 140 cen- tenarians were assessed and 115 (82.1%) died. The median survival time after 100 years old was 38 months. Survival after age 100 was associated with acute disease (last month), self-perception of physical condition and drinking status. This study intends do identify factors that predict longevity in long-lived individuals. Findings recognize the importance of factors related with health status, self-perception of physi- cal condition and life style (no alcohol consume) for survival. Further studies should explore the predictive value of these factors, as well as psychosocial aspects, considering living longer but also the quality of time beyond one hundred.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5428"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055426968,"id":"50|od______2017::48eb86b38e6e2cfb94bf0a4663848c10","originalId":["od______2017::48eb86b38e6e2cfb94bf0a4663848c10"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.995Z","dateoftransformation":"2019-11-30T04:20:13.611Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.995Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5416","datestamp":"2019-02-23T03:01:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":3,"pid":null,"affiliation":null},{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":4,"pid":null,"affiliation":null},{"fullname":"Azevedo, Maria João","name":"Maria João","surname":"Azevedo","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognition","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Functional capacity","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Cognition and functionality: how do they related to time lived after 100 years of age?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The number of centenarians has greatly increased in Portugal in the last decades. Therefore, the analysis of survival time after becoming a centenarian and related factors constitute an import- ant issue for the quality of care provision. The objective of this study is to identify health related factors associated with the time lived after being 100 years of age. Methods: Data come from the population-based study PT100 (Oporto Centenarian Study) and considers information gathered through face-to-face interviews with centenarians and their proxies during 2013. Study eligibility criteria included being 100 and more years old and living in the Oporto Metropolitan Area. Survival analyses were performed in order to identify factors associated with survival after the 100. Functional status (e.g., walking, being bedrid- den) and specific health conditions (e.g. presence/absence of cognitive impairment) were considered as potential factors. Results: The sam- ple comprises 140 centenarians with approximately 14.5 months as median survival time after their 100th anniversary. Centenarians who were bedridden presented a higher probability to live after 100 years when compared with functionally independent centenarians. Presence of cognitive impairment was not associated with the time lived after 100 years old. Conclusions: Given the increasing number of centenarians in Portugal, different studies based on this population need to be consid- ered. The present study, focused on the life after 100 years old, provides new information about this topic contributing to the formulation of new scientific questions for this population.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5416"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055427049,"id":"50|od______2017::4a1bcdd965b879fbac86a7d3b947a6cc","originalId":["od______2017::4a1bcdd965b879fbac86a7d3b947a6cc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:24:51.637Z","dateoftransformation":"2019-11-30T04:20:13.727Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:24:51.637Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/995","datestamp":"2014-07-15T01:00:31Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Oliveira, Ana Maria","name":"Ana Maria","surname":"Oliveira","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognição e Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Processamento da Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Processar a Linguagem através dos Sentidos: entre a doçura e a amargura","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Instituto de Literatura Comparada Margarida Losa – Faculdade de Letras da Universidade do Porto","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0010","classname":"Lecture","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/995"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json new file mode 100644 index 000000000..390ad6f16 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "aaaa","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055728345,"id":"50|od______1582::626bf0af9988f811e6290d694587edf5","originalId":["od______1582::626bf0af9988f811e6290d694587edf5"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:57:53.59Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:396375","datestamp":"2018-12-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Chades, Iadine","name":"Iadine","surname":"Chades","rank":1,"pid":null,"affiliation":null},{"fullname":"Chapron, Guillaume","name":"Guillaume","surname":"Chapron","rank":2,"pid":null,"affiliation":null},{"fullname":"Cros, Marie-Josee","name":"Marie-Josee","surname":"Cros","rank":3,"pid":null,"affiliation":null},{"fullname":"Garcia, Frederick","name":"Frederick","surname":"Garcia","rank":4,"pid":null,"affiliation":null},{"fullname":"Sabbadin, Regis","name":"Regis","surname":"Sabbadin","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"jupyter","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The Markov Decision Processes (MDP) toolbox proposes functions related to the resolution of discrete-time Markov Decision Processes: finite horizon, value iteration, policy iteration, linear programming algorithms with some variants and also proposes some functions related to Reinforcement Learning.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/396375"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055729488,"id":"50|od______1582::639909adfad9d708308f2aedb733e4a0","originalId":["od______1582::639909adfad9d708308f2aedb733e4a0"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:50:56.823Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:408837","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Becheler, Ronan","name":"Ronan","surname":"Becheler","rank":1,"pid":null,"affiliation":null},{"fullname":"Masson, Jean-Pierre","name":"Jean-Pierre","surname":"Masson","rank":2,"pid":null,"affiliation":null},{"fullname":"Arnaud-Haond, Sophie","name":"Sophie","surname":"Arnaud-Haond","rank":3,"pid":null,"affiliation":null},{"fullname":"Halkett, Fabien","name":"Fabien","surname":"Halkett","rank":4,"pid":null,"affiliation":null},{"fullname":"Mariette, Stéphanie","name":"Stéphanie","surname":"Mariette","rank":5,"pid":null,"affiliation":null},{"fullname":"Guillemin, Marie-Laure","name":"Marie-Laure","surname":"Guillemin","rank":6,"pid":null,"affiliation":null},{"fullname":"Valero, Myriam","name":"Myriam","surname":"Valero","rank":7,"pid":null,"affiliation":null},{"fullname":"Destombe, Christophe","name":"Christophe","surname":"Destombe","rank":8,"pid":null,"affiliation":null},{"fullname":"Stoeckel, Solenn","name":"Solenn","surname":"Stoeckel","rank":9,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"clonalite","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"eucaryote","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"reproduction clonale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche bayésienne","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"écologie végétale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"logiciel","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"endogamie","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"autoincompatibilité","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"ClonEstiMate 1.01","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"ClonEstiMate, a Bayesian method for quantifying rates of clonality of populations genotyped at two-time steps","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/408837"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055738736,"id":"50|od______1582::6e7a9b21a2feef45673890432af34244","originalId":["od______1582::6e7a9b21a2feef45673890432af34244"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:53:57.871Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:403174","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Delenne, Jean-Yves","name":"Jean-Yves","surname":"Delenne","rank":1,"pid":null,"affiliation":null},{"fullname":"Richefeu, Vincent","name":"Vincent","surname":"Richefeu","rank":2,"pid":null,"affiliation":null},{"fullname":"Frank, Xavier","name":"Xavier","surname":"Frank","rank":3,"pid":null,"affiliation":null},{"fullname":"Radjaï, Farhang","name":"Farhang","surname":"Radjaï","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Modélisation et simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Modeling and Simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"structure granulaire","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"algorithme","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"simulation numérique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de gaz","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de liquide","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Flowbox","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The code FLOWbox is dedicated to the computation of flow through porous and granular materials.\nFLOWbox is based on an optimized 3D Lattice Boltzmann algorithm for the computation of liquid or gas flows directly at the scale of heterogeneities. FLOWbox intends to be a powerful and versatile software able to operate on highly detailed microstructures in a systematic fashion. These microstructures can be generated either from numerical simulation or from tomography.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/403174"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055741711,"id":"50|od______1582::71dd00de0e70764d2800a766c0b165db","originalId":["od______1582::71dd00de0e70764d2800a766c0b165db"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:35:31.489Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442564","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Lortal, Sylvie","name":"Sylvie","surname":"Lortal","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Charte graphique et site web MILK International Symposium","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442564"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055745351,"id":"50|od______1582::764d9ba73f2f3e794e00a80b075330ef","originalId":["od______1582::764d9ba73f2f3e794e00a80b075330ef"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:41:37.345Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407117","datestamp":"2018-05-28T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Favre, Colette","name":"Colette","surname":"Favre","rank":1,"pid":null,"affiliation":null},{"fullname":"Grel, Audrey","name":"Audrey","surname":"Grel","rank":2,"pid":null,"affiliation":null},{"fullname":"Granier, Evelyne","name":"Evelyne","surname":"Granier","rank":3,"pid":null,"affiliation":null},{"fullname":"Cosserat-Mangeot, Régine","name":"Régine","surname":"Cosserat-Mangeot","rank":4,"pid":null,"affiliation":null},{"fullname":"Bachacou, Jean","name":"Jean","surname":"Bachacou","rank":5,"pid":null,"affiliation":null},{"fullname":"LEROY, Nathalie","name":"Nathalie","surname":"Leroy","rank":6,"pid":null,"affiliation":null},{"fullname":"Dupouey, Jean-Luc","name":"Jean-Luc","surname":"Dupouey","rank":7,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"fra/fre","classname":"French","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"digitalisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"carte des sols","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"géoréférencement","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vectorisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"France","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"usage du sol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Digitalisation des cartes anciennes : Manuel pour la vectorisation de l'usage des sols et le géo-référencement des minutes 1:40 000 de la carte d' Etat-Major","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407117"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/dataset/dataset_10.json new file mode 100644 index 000000000..0243a4e3d --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/dataset/dataset_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868909,"id":"50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529","originalId":["od______3989::02dd5d2c222191b0b9bd4f33c8e96529"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[{"value":"10.4185/RLCS-2018-1243","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2020-03-03T13:05:26.091Z","dateoftransformation":"2020-03-03T13:06:53.161Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.091Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/562","datestamp":"2018-01-23T15:06:07Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Gallardo-Camacho, Jorge","name":"Jorge","surname":"Gallardo-Camacho","rank":1,"pid":null,"affiliation":null},{"fullname":"Trujillo Fernández, José Ramón","name":"José Ramón","surname":"Trujillo Fernández","rank":2,"pid":null,"affiliation":null},{"fullname":"Jorge Alonso, Ana","name":"Ana","surname":"Jorge Alonso","rank":3,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"yihadismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"viralidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vídeo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"propaganda","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"jihadism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"virality","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"video","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5903 Ideologías Políticas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6310.13 Terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"El individualismo como estrategia","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Individualism as an improvised strategy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Se analiza como el Yihadismo distribuye su mensaje propaganístico en You Tube.\nUniversidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"MediaLab - UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/562"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868954,"id":"50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b","originalId":["od______3989::05d8c751462f9bb8d2b06956dfbc5c7b"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.079Z","dateoftransformation":"2020-03-03T13:06:53.239Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.079Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/227","datestamp":"2017-11-15T16:29:55Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Rico Pérez, Marta","name":"Marta","surname":"Rico Pérez","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Eventos deportivos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Retos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos, celebrado en la Universidad Camilo José Cela.\n\n\n\nDerivado del proyecto de investigación \"La situación de los eventos deportivos en España a través de su estructuras y de sus herramientas\", tiene como finalidad conocer la situación de los eventos deportivos en España. Se realizó un estudio descriptivo holístico en el que se investigaron elementos culturales, el perfil de los recursos humanos, la estructura de los comités, entre otras.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/227"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869097,"id":"50|od______3989::0f89464c4ac4c398fe0c71433b175a62","originalId":["od______3989::0f89464c4ac4c398fe0c71433b175a62"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.069Z","dateoftransformation":"2020-03-03T13:06:53.54Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.069Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/802","datestamp":"2018-11-14T15:30:47Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Actividades deportivas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Impacto físico","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigaciones en Ciencias de la Actividad Física y del Deporte CCAFD - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Blanca Romero, investigadora y docente de Ciencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela, describe dos de las líneas de investigación que se han desarrollado en el departamento CCAFD de UCJC: el impacto físico de las diferentes actividades deportivas y los métodos de recuperación más eficaces tras el ejercicio físico.\nBlanca también destaca la importancia en el ámbito de la salud los estudios en Ciencias de la Actividad Física y del Deporte.\nCiencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/802"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869215,"id":"50|od______3989::1729c3988199b95d1d566851af7d3c55","originalId":["od______3989::1729c3988199b95d1d566851af7d3c55"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.653Z","dateoftransformation":"2020-03-03T13:06:53.764Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.653Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/801","datestamp":"2018-11-14T15:19:38Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Prevención","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Hidratación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportistas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Electrolitos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportes de resistencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"La importancia de la hidratación en competiciones resistencia, por Juan del Coso","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Juan del Coso, investigador y profesor en el Grado en Ciencias de la Actividad Física y del Deporte UCJC, presenta el proyecto de investigación que ha realizado el departamento CCAFD de UCJC: la prevención de desequilibrios de agua y electrolitos que se dan en los deportes de resistencia para que los deportistas realicen su actividad de una manera más segura.\nMás información: http://www.ucjc.edu/2016/03/investiga...\nUniversidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Grado en Ciencias de la Actividad Física y del Deporte UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/801"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869487,"id":"50|od______3989::2e3f34ce90520fae350a7e1148d7dcea","originalId":["od______3989::2e3f34ce90520fae350a7e1148d7dcea"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:54.218Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/800","datestamp":"2018-11-14T13:43:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Cafeína","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Efectos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alto rendimiento","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Competiciones","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Beneficios","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Efectos positivos y negativos del uso de la cafeína en el deporte","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) sobre la cafeína y sus efectos cuando se realiza deporte. https://www.ucjc.edu/2016/08/la-bbc-s...\n\nJuan Del Coso, director del Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela, nos describe cómo está siendo la investigación que desarrolla con deportistas de alto rendimiento y el consumo de cafeína.\n\n\"Nuestra investigación se enmarca dentro del campo de la fisiología del ejercicio y el objetivo que tenemos es investigar los efectos que tiene la cafeína en los deportistas, principalmente saber si es una ayuda ergogénica en la mayor parte de los deportes, pero también conocer qué perjuicios existen para aquellos deportistas que la utilizan para incrementar el rendimiento deportivo\", explica Del Coso.\n\nY es que los datos son muy llamativos: tres de cada cuatro deportistas de alto rendimiento utilizan la cafeína antes de la competición y muchas veces se utiliza sin saber los perjuicios que puede tener para el deportista. \"Lo que estamos investigando es cómo una sustancia, que te puede hacer rendir mejor, cómo puede afectar negativamente cuando termina una competición\".\n\nPero esta investigación no sólo puede extraer conclusiones interesantes y útiles para los deportistas profesionales, \"investigando el deporte de alto rendimiento podemos conocer los beneficios y perjuicios de la cafeína que también afectarían al deportista amateur y hacer un deporte en general más seguro\".\n\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/800"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869498,"id":"50|od______3989::2f4f3c820c450bd08dac08d07cc82dcf","originalId":["od______3989::2f4f3c820c450bd08dac08d07cc82dcf"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.806Z","dateoftransformation":"2020-03-03T13:06:54.229Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.806Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/797","datestamp":"2018-11-14T12:12:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Cuesta Cano, Laura","name":"Laura","surname":"Cuesta Cano","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marketing digital","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Medios sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marcas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Empresas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Emprendedores","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"II Liga de Debate CICAE - UCJC","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6114.13 Marketing","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Laura Cuesta - Liga de Debate CICAE - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Laura Cuesta, profesora en la Universidad Camilo José Cela (UCJC) y Especialista en Marketing Digital y Medios Sociales para marcas y emprendedores. \n\nEn esta ocasión, Laura Cuesta, nos explica el significado de redes sociales y nos habla sobre el uso que le dan los usuarios.\n\nII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la segunda edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/797"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870582,"id":"50|od______3989::752fd0b2bbac1ea1cc50e52fd46eb663","originalId":["od______3989::752fd0b2bbac1ea1cc50e52fd46eb663"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.561Z","dateoftransformation":"2020-03-03T13:06:55.716Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.561Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/798","datestamp":"2018-11-14T12:57:26Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Psicología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcohol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Dependencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcoholismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Realidad virtual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Psicología conductual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Intervención basada en realidad virtual sobre la dependencia del alcohol","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) con tecnología aplicada al abandono de la dependencia del alcohol. \nRosa Jurado, profesora e investigadora de UCJC https://www.ucjc.edu/, explica cómo se conjuga el alcoholismo con la realidad virtual. \"Mi investigación consiste en desarrollar una técnica de intervención o rehabilitación que tiene como propósito fomentar la capacidad de inhibición para que las personas que tienen dependencia del alcohol sean capaces de controlar su conducta de aproximación hacia aquello que tiene que ver con el consumo de alcohol\".\n\nEn esta investigación, liderada por la Universidad Camilo José Cela, están participando, el Instituto de Investigación Biomédica del Hospital 12 de Octubre y la Universidad Politécnica de Madrid, con el CeDint. \"En nuestro equipo de investigación pensamos que, además del deseo de consumo, existen una carencia clara de capacidad de control inhibitorio en este tipo de personas\", destaca Rosa Jurado.\n\nLa realidad virtual sirve, según explica Gabriel Rubio, jefe de Psiquiatría del Hospital 12 de Octubre, \"para dar un paso más, para ver cómo reacciona un sujeto en un ambiente que no es el real, pero se parece mucho al real\". El objetivo final de estas acciones es \"mejorar la capacidad del individuo para poner en marcha mecanismos de inhibición conductual, para que el sujeto sea capaz de decir que no\".\n\nY no acaba ahí el proceso. La fase final del tratamiento se enfoca en que el paciente \"sea capaz de reconstruir su vida\" a través de programas de entrenamiento de habilidades sociales, asertividad, familias... \"Juntando todas las áreas de intervención, la abstinencia se mantiene mucho más tiempo y las recaídas disminuyen\".","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/798"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870750,"id":"50|od______3989::7fcbe3a03280663cddebfd3cb9203177","originalId":["od______3989::7fcbe3a03280663cddebfd3cb9203177"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.652Z","dateoftransformation":"2020-03-03T13:06:55.95Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.652Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/796","datestamp":"2018-11-05T13:36:54Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Redes sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"III Liga de Debate CICAE","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Instantaneidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información periodística","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Fake news","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Jorge Gallardo - Liga de Debate CICAE","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Jorge Gallardo, profesor de Derecho en la Universidad Camilo José Cela (UCJC), Doctor en Comunicación Audiovisual y MBA en Empresas Audiovisuales. Subdirector de Espejo Público en Antena 3 Noticias. \n\nEn esta ocasión, Jorge Gallardo habla sobre las redes sociales, cómo han transformado la manera en la que nos comunicamos y nos informamos. \n\nIII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la tercera edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/796"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872001,"id":"50|od______3989::d791339867bec6d3eb2104deeb4e4961","originalId":["od______3989::d791339867bec6d3eb2104deeb4e4961"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.586Z","dateoftransformation":"2020-03-03T13:06:57.721Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.586Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/645","datestamp":"2018-04-12T07:59:27Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Transferencia de Conocimiento e Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Tecnología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"UCJC Open Science Day 2018","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"El UCJC Open Science Day tiene como objetivo mostrar las actividades de investigación llevadas a cabo por investigadores de la Universidad Camilo José Cela (UCJC) a todos los miembros de la UCJC.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/645"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct/otherresearchproduct_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct/otherresearchproduct_10.json new file mode 100644 index 000000000..ae580eab9 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct/otherresearchproduct_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Treino de Jovens","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Iniciação Desportiva","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424163,"id":"50|od______2017::225a8382b6a3db76fba97c2dc146f937","originalId":["od______2017::225a8382b6a3db76fba97c2dc146f937"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:26:56.251Z","dateoftransformation":"2019-11-30T04:20:01.127Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:26:56.251Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/3290","datestamp":"2016-07-14T02:01:33Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Millenium","name":null,"surname":null,"rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Referências bibliográficas ao estilo APA","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/3290"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424299,"id":"50|od______2017::241d59362b075000e89d276e7bb6badc","originalId":["od______2017::241d59362b075000e89d276e7bb6badc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-09-06T04:39:29.25Z","dateoftransformation":"2019-11-30T04:20:01.631Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-09-06T04:39:29.25Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1190","datestamp":"2019-09-04T02:00:41Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Menezes, Luís","name":"Luís","surname":"Menezes","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, António","name":"António","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Martins, Ana Patrícia","name":"Ana Patrícia","surname":"Martins","rank":3,"pid":null,"affiliation":null},{"fullname":"Rodrigues, Cátia","name":"Cátia","surname":"Rodrigues","rank":4,"pid":null,"affiliation":null},{"fullname":"Gomes, Helena","name":"Helena","surname":"Gomes","rank":5,"pid":null,"affiliation":null},{"fullname":"Novo, Sónia","name":"Sónia","surname":"Novo","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Matemática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Capacidades tranversais","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Penso, comunico, resolvo","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Esta brochura destina-se a alunos do ensino básico (1.º a 9.º anos), tendo como objetivo fornecer informação sobre as capacidades transversais que o novo Programa de Matemática português (2007) veio destacar.\nEscola Superior de Educação de Viseu","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"ESEV","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/fake"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1190"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424626,"id":"50|od______2017::28fe553056801d4a764edac6bec334ec","originalId":["od______2017::28fe553056801d4a764edac6bec334ec"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:03.799Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5432","datestamp":"2019-02-23T03:01:24Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":3,"pid":null,"affiliation":null},{"fullname":"Jopp, Daniela","name":"Daniela","surname":"Jopp","rank":4,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Europe","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians in Europe","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"In the last decade, the number of centenarians world- wide has increased. Following this tendency, the number of centenarian studies has also exponentially augmented. Given the complexity to conduct research with centenarians, elementary information on this specific age group remains unknown at a European level. This paper compares basic characteristics of centenarians from 32 European coun- tries based on Census 2011. Results revealed that France is the country with higher ratio of centenarians, followed by Italy and Greece; on the other hand Croatia, Romania and Bulgaria present the lower ratio. The distribution accord- ing to gender is similar for all countries, with higher ratio of women reaching 100 years old. Different patterns of education level were found on countries where this infor- mation was reliable: Portugal and Greece are the countries with lower levels of education, with more than half without formal education; Finland, UK and Iceland are the countries with higher levels of education, with all centenarians having at least lower secondary education. Analysing the residence situation (living in the community or living in the institu- tion), Romania, Bulgaria, Lithuania, Greece and Latvia are the countries that present higher percentages of centenarians living in the community; Iceland is the country with lower percentage of centenarians living in the community. A posi- tive correlation between the number of centenarians and the percentage of Total Health Expenditure of GDP is observed. This study provides important information about the current profile of European centenarians, which is compared to gen- eral information on the centenarian population from EUA and Asia.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5432"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424730,"id":"50|od______2017::2a777b5c11f070ece546d75162047179","originalId":["od______2017::2a777b5c11f070ece546d75162047179"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:04.285Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5428","datestamp":"2019-02-23T03:01:30Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":3,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"100 years old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Survival after 100 years of age in Portuguese centenarians","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The group of individuals aged 80 and over is growing faster than other segment of the population, and within this group the number of centenarians has risen exponentially worldwide. This phenomena lead to an increasing number of centenarian studies, improving the knowledge about this population, validating the idea of heterogeneity that char- acterizes this group. However, the factors influencing their aging survival remains understudied. The present study aims to identify factors associated with survival after 100 years old in a sample of Portuguese centenarians. After being included in a population-based study on centenarians (PT100–Oporto Centenarian Study), each participant was assessed by a tel- ephone interview every 6 months in order to assess his/her health condition. Follow-up was considered as the time (in months) between 100th birthday and death or the last tel- ephone contact. Survival analysis was performed to iden- tify factors associated with survival after 100 years old. Sociological and medical factors were considered. 140 cen- tenarians were assessed and 115 (82.1%) died. The median survival time after 100 years old was 38 months. Survival after age 100 was associated with acute disease (last month), self-perception of physical condition and drinking status. This study intends do identify factors that predict longevity in long-lived individuals. Findings recognize the importance of factors related with health status, self-perception of physi- cal condition and life style (no alcohol consume) for survival. Further studies should explore the predictive value of these factors, as well as psychosocial aspects, considering living longer but also the quality of time beyond one hundred.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5428"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055426968,"id":"50|od______2017::48eb86b38e6e2cfb94bf0a4663848c10","originalId":["od______2017::48eb86b38e6e2cfb94bf0a4663848c10"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.995Z","dateoftransformation":"2019-11-30T04:20:13.611Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.995Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5416","datestamp":"2019-02-23T03:01:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":3,"pid":null,"affiliation":null},{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":4,"pid":null,"affiliation":null},{"fullname":"Azevedo, Maria João","name":"Maria João","surname":"Azevedo","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognition","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Functional capacity","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Cognition and functionality: how do they related to time lived after 100 years of age?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The number of centenarians has greatly increased in Portugal in the last decades. Therefore, the analysis of survival time after becoming a centenarian and related factors constitute an import- ant issue for the quality of care provision. The objective of this study is to identify health related factors associated with the time lived after being 100 years of age. Methods: Data come from the population-based study PT100 (Oporto Centenarian Study) and considers information gathered through face-to-face interviews with centenarians and their proxies during 2013. Study eligibility criteria included being 100 and more years old and living in the Oporto Metropolitan Area. Survival analyses were performed in order to identify factors associated with survival after the 100. Functional status (e.g., walking, being bedrid- den) and specific health conditions (e.g. presence/absence of cognitive impairment) were considered as potential factors. Results: The sam- ple comprises 140 centenarians with approximately 14.5 months as median survival time after their 100th anniversary. Centenarians who were bedridden presented a higher probability to live after 100 years when compared with functionally independent centenarians. Presence of cognitive impairment was not associated with the time lived after 100 years old. Conclusions: Given the increasing number of centenarians in Portugal, different studies based on this population need to be consid- ered. The present study, focused on the life after 100 years old, provides new information about this topic contributing to the formulation of new scientific questions for this population.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5416"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055427049,"id":"50|od______2017::4a1bcdd965b879fbac86a7d3b947a6cc","originalId":["od______2017::4a1bcdd965b879fbac86a7d3b947a6cc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:24:51.637Z","dateoftransformation":"2019-11-30T04:20:13.727Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:24:51.637Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/995","datestamp":"2014-07-15T01:00:31Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Oliveira, Ana Maria","name":"Ana Maria","surname":"Oliveira","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognição e Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Processamento da Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Processar a Linguagem através dos Sentidos: entre a doçura e a amargura","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Instituto de Literatura Comparada Margarida Losa – Faculdade de Letras da Universidade do Porto","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0010","classname":"Lecture","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/995"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json new file mode 100644 index 000000000..2439dc1b6 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/jupyter/software/software_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "jupyter Notebooks","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"python","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"python","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055728345,"id":"50|od______1582::626bf0af9988f811e6290d694587edf5","originalId":["od______1582::626bf0af9988f811e6290d694587edf5"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:57:53.59Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:396375","datestamp":"2018-12-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Chades, Iadine","name":"Iadine","surname":"Chades","rank":1,"pid":null,"affiliation":null},{"fullname":"Chapron, Guillaume","name":"Guillaume","surname":"Chapron","rank":2,"pid":null,"affiliation":null},{"fullname":"Cros, Marie-Josee","name":"Marie-Josee","surname":"Cros","rank":3,"pid":null,"affiliation":null},{"fullname":"Garcia, Frederick","name":"Frederick","surname":"Garcia","rank":4,"pid":null,"affiliation":null},{"fullname":"Sabbadin, Regis","name":"Regis","surname":"Sabbadin","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"jupyter","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The Markov Decision Processes (MDP) toolbox proposes functions related to the resolution of discrete-time Markov Decision Processes: finite horizon, value iteration, policy iteration, linear programming algorithms with some variants and also proposes some functions related to Reinforcement Learning.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/396375"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055729488,"id":"50|od______1582::639909adfad9d708308f2aedb733e4a0","originalId":["od______1582::639909adfad9d708308f2aedb733e4a0"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:50:56.823Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:408837","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Becheler, Ronan","name":"Ronan","surname":"Becheler","rank":1,"pid":null,"affiliation":null},{"fullname":"Masson, Jean-Pierre","name":"Jean-Pierre","surname":"Masson","rank":2,"pid":null,"affiliation":null},{"fullname":"Arnaud-Haond, Sophie","name":"Sophie","surname":"Arnaud-Haond","rank":3,"pid":null,"affiliation":null},{"fullname":"Halkett, Fabien","name":"Fabien","surname":"Halkett","rank":4,"pid":null,"affiliation":null},{"fullname":"Mariette, Stéphanie","name":"Stéphanie","surname":"Mariette","rank":5,"pid":null,"affiliation":null},{"fullname":"Guillemin, Marie-Laure","name":"Marie-Laure","surname":"Guillemin","rank":6,"pid":null,"affiliation":null},{"fullname":"Valero, Myriam","name":"Myriam","surname":"Valero","rank":7,"pid":null,"affiliation":null},{"fullname":"Destombe, Christophe","name":"Christophe","surname":"Destombe","rank":8,"pid":null,"affiliation":null},{"fullname":"Stoeckel, Solenn","name":"Solenn","surname":"Stoeckel","rank":9,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"python notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"eucaryote","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"reproduction clonale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche bayésienne","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"écologie végétale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"logiciel","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"endogamie","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"autoincompatibilité","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"ClonEstiMate 1.01","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"ClonEstiMate, a Bayesian method for quantifying rates of clonality of populations genotyped at two-time steps","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/408837"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055738736,"id":"50|od______1582::6e7a9b21a2feef45673890432af34244","originalId":["od______1582::6e7a9b21a2feef45673890432af34244"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:53:57.871Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:403174","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Delenne, Jean-Yves","name":"Jean-Yves","surname":"Delenne","rank":1,"pid":null,"affiliation":null},{"fullname":"Richefeu, Vincent","name":"Vincent","surname":"Richefeu","rank":2,"pid":null,"affiliation":null},{"fullname":"Frank, Xavier","name":"Xavier","surname":"Frank","rank":3,"pid":null,"affiliation":null},{"fullname":"Radjaï, Farhang","name":"Farhang","surname":"Radjaï","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"jupyter","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Modeling and Simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"structure granulaire","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"algorithme","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"simulation numérique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de gaz","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de liquide","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Flowbox","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The code FLOWbox is dedicated to the computation of flow through porous and granular materials.\nFLOWbox is based on an optimized 3D Lattice Boltzmann algorithm for the computation of liquid or gas flows directly at the scale of heterogeneities. FLOWbox intends to be a powerful and versatile software able to operate on highly detailed microstructures in a systematic fashion. These microstructures can be generated either from numerical simulation or from tomography.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/403174"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055741711,"id":"50|od______1582::71dd00de0e70764d2800a766c0b165db","originalId":["od______1582::71dd00de0e70764d2800a766c0b165db"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:35:31.489Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442564","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Lortal, Sylvie","name":"Sylvie","surname":"Lortal","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Charte graphique et site web MILK International Symposium","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442564"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055745351,"id":"50|od______1582::764d9ba73f2f3e794e00a80b075330ef","originalId":["od______1582::764d9ba73f2f3e794e00a80b075330ef"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:41:37.345Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407117","datestamp":"2018-05-28T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Favre, Colette","name":"Colette","surname":"Favre","rank":1,"pid":null,"affiliation":null},{"fullname":"Grel, Audrey","name":"Audrey","surname":"Grel","rank":2,"pid":null,"affiliation":null},{"fullname":"Granier, Evelyne","name":"Evelyne","surname":"Granier","rank":3,"pid":null,"affiliation":null},{"fullname":"Cosserat-Mangeot, Régine","name":"Régine","surname":"Cosserat-Mangeot","rank":4,"pid":null,"affiliation":null},{"fullname":"Bachacou, Jean","name":"Jean","surname":"Bachacou","rank":5,"pid":null,"affiliation":null},{"fullname":"LEROY, Nathalie","name":"Nathalie","surname":"Leroy","rank":6,"pid":null,"affiliation":null},{"fullname":"Dupouey, Jean-Luc","name":"Jean-Luc","surname":"Dupouey","rank":7,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"fra/fre","classname":"French","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"digitalisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"carte des sols","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"géoréférencement","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vectorisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"France","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"usage du sol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Digitalisation des cartes anciennes : Manuel pour la vectorisation de l'usage des sols et le géo-référencement des minutes 1:40 000 de la carte d' Etat-Major","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407117"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json new file mode 100644 index 000000000..0243a4e3d --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868909,"id":"50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529","originalId":["od______3989::02dd5d2c222191b0b9bd4f33c8e96529"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[{"value":"10.4185/RLCS-2018-1243","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2020-03-03T13:05:26.091Z","dateoftransformation":"2020-03-03T13:06:53.161Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.091Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/562","datestamp":"2018-01-23T15:06:07Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Gallardo-Camacho, Jorge","name":"Jorge","surname":"Gallardo-Camacho","rank":1,"pid":null,"affiliation":null},{"fullname":"Trujillo Fernández, José Ramón","name":"José Ramón","surname":"Trujillo Fernández","rank":2,"pid":null,"affiliation":null},{"fullname":"Jorge Alonso, Ana","name":"Ana","surname":"Jorge Alonso","rank":3,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"yihadismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"viralidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vídeo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"propaganda","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"jihadism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"virality","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"video","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5903 Ideologías Políticas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6310.13 Terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"El individualismo como estrategia","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Individualism as an improvised strategy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Se analiza como el Yihadismo distribuye su mensaje propaganístico en You Tube.\nUniversidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"MediaLab - UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/562"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868954,"id":"50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b","originalId":["od______3989::05d8c751462f9bb8d2b06956dfbc5c7b"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.079Z","dateoftransformation":"2020-03-03T13:06:53.239Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.079Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/227","datestamp":"2017-11-15T16:29:55Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Rico Pérez, Marta","name":"Marta","surname":"Rico Pérez","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Eventos deportivos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Retos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos, celebrado en la Universidad Camilo José Cela.\n\n\n\nDerivado del proyecto de investigación \"La situación de los eventos deportivos en España a través de su estructuras y de sus herramientas\", tiene como finalidad conocer la situación de los eventos deportivos en España. Se realizó un estudio descriptivo holístico en el que se investigaron elementos culturales, el perfil de los recursos humanos, la estructura de los comités, entre otras.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/227"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869097,"id":"50|od______3989::0f89464c4ac4c398fe0c71433b175a62","originalId":["od______3989::0f89464c4ac4c398fe0c71433b175a62"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.069Z","dateoftransformation":"2020-03-03T13:06:53.54Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.069Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/802","datestamp":"2018-11-14T15:30:47Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Actividades deportivas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Impacto físico","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigaciones en Ciencias de la Actividad Física y del Deporte CCAFD - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Blanca Romero, investigadora y docente de Ciencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela, describe dos de las líneas de investigación que se han desarrollado en el departamento CCAFD de UCJC: el impacto físico de las diferentes actividades deportivas y los métodos de recuperación más eficaces tras el ejercicio físico.\nBlanca también destaca la importancia en el ámbito de la salud los estudios en Ciencias de la Actividad Física y del Deporte.\nCiencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/802"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869215,"id":"50|od______3989::1729c3988199b95d1d566851af7d3c55","originalId":["od______3989::1729c3988199b95d1d566851af7d3c55"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.653Z","dateoftransformation":"2020-03-03T13:06:53.764Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.653Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/801","datestamp":"2018-11-14T15:19:38Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Prevención","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Hidratación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportistas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Electrolitos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportes de resistencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"La importancia de la hidratación en competiciones resistencia, por Juan del Coso","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Juan del Coso, investigador y profesor en el Grado en Ciencias de la Actividad Física y del Deporte UCJC, presenta el proyecto de investigación que ha realizado el departamento CCAFD de UCJC: la prevención de desequilibrios de agua y electrolitos que se dan en los deportes de resistencia para que los deportistas realicen su actividad de una manera más segura.\nMás información: http://www.ucjc.edu/2016/03/investiga...\nUniversidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Grado en Ciencias de la Actividad Física y del Deporte UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/801"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869487,"id":"50|od______3989::2e3f34ce90520fae350a7e1148d7dcea","originalId":["od______3989::2e3f34ce90520fae350a7e1148d7dcea"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:54.218Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/800","datestamp":"2018-11-14T13:43:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Cafeína","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Efectos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alto rendimiento","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Competiciones","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Beneficios","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Efectos positivos y negativos del uso de la cafeína en el deporte","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) sobre la cafeína y sus efectos cuando se realiza deporte. https://www.ucjc.edu/2016/08/la-bbc-s...\n\nJuan Del Coso, director del Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela, nos describe cómo está siendo la investigación que desarrolla con deportistas de alto rendimiento y el consumo de cafeína.\n\n\"Nuestra investigación se enmarca dentro del campo de la fisiología del ejercicio y el objetivo que tenemos es investigar los efectos que tiene la cafeína en los deportistas, principalmente saber si es una ayuda ergogénica en la mayor parte de los deportes, pero también conocer qué perjuicios existen para aquellos deportistas que la utilizan para incrementar el rendimiento deportivo\", explica Del Coso.\n\nY es que los datos son muy llamativos: tres de cada cuatro deportistas de alto rendimiento utilizan la cafeína antes de la competición y muchas veces se utiliza sin saber los perjuicios que puede tener para el deportista. \"Lo que estamos investigando es cómo una sustancia, que te puede hacer rendir mejor, cómo puede afectar negativamente cuando termina una competición\".\n\nPero esta investigación no sólo puede extraer conclusiones interesantes y útiles para los deportistas profesionales, \"investigando el deporte de alto rendimiento podemos conocer los beneficios y perjuicios de la cafeína que también afectarían al deportista amateur y hacer un deporte en general más seguro\".\n\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/800"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869498,"id":"50|od______3989::2f4f3c820c450bd08dac08d07cc82dcf","originalId":["od______3989::2f4f3c820c450bd08dac08d07cc82dcf"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.806Z","dateoftransformation":"2020-03-03T13:06:54.229Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.806Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/797","datestamp":"2018-11-14T12:12:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Cuesta Cano, Laura","name":"Laura","surname":"Cuesta Cano","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marketing digital","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Medios sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Marcas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Empresas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Emprendedores","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"II Liga de Debate CICAE - UCJC","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6114.13 Marketing","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Laura Cuesta - Liga de Debate CICAE - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Laura Cuesta, profesora en la Universidad Camilo José Cela (UCJC) y Especialista en Marketing Digital y Medios Sociales para marcas y emprendedores. \n\nEn esta ocasión, Laura Cuesta, nos explica el significado de redes sociales y nos habla sobre el uso que le dan los usuarios.\n\nII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la segunda edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/797"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870582,"id":"50|od______3989::752fd0b2bbac1ea1cc50e52fd46eb663","originalId":["od______3989::752fd0b2bbac1ea1cc50e52fd46eb663"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.561Z","dateoftransformation":"2020-03-03T13:06:55.716Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.561Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/798","datestamp":"2018-11-14T12:57:26Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Psicología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcohol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Dependencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcoholismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Realidad virtual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Psicología conductual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Intervención basada en realidad virtual sobre la dependencia del alcohol","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) con tecnología aplicada al abandono de la dependencia del alcohol. \nRosa Jurado, profesora e investigadora de UCJC https://www.ucjc.edu/, explica cómo se conjuga el alcoholismo con la realidad virtual. \"Mi investigación consiste en desarrollar una técnica de intervención o rehabilitación que tiene como propósito fomentar la capacidad de inhibición para que las personas que tienen dependencia del alcohol sean capaces de controlar su conducta de aproximación hacia aquello que tiene que ver con el consumo de alcohol\".\n\nEn esta investigación, liderada por la Universidad Camilo José Cela, están participando, el Instituto de Investigación Biomédica del Hospital 12 de Octubre y la Universidad Politécnica de Madrid, con el CeDint. \"En nuestro equipo de investigación pensamos que, además del deseo de consumo, existen una carencia clara de capacidad de control inhibitorio en este tipo de personas\", destaca Rosa Jurado.\n\nLa realidad virtual sirve, según explica Gabriel Rubio, jefe de Psiquiatría del Hospital 12 de Octubre, \"para dar un paso más, para ver cómo reacciona un sujeto en un ambiente que no es el real, pero se parece mucho al real\". El objetivo final de estas acciones es \"mejorar la capacidad del individuo para poner en marcha mecanismos de inhibición conductual, para que el sujeto sea capaz de decir que no\".\n\nY no acaba ahí el proceso. La fase final del tratamiento se enfoca en que el paciente \"sea capaz de reconstruir su vida\" a través de programas de entrenamiento de habilidades sociales, asertividad, familias... \"Juntando todas las áreas de intervención, la abstinencia se mantiene mucho más tiempo y las recaídas disminuyen\".","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/798"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870750,"id":"50|od______3989::7fcbe3a03280663cddebfd3cb9203177","originalId":["od______3989::7fcbe3a03280663cddebfd3cb9203177"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.652Z","dateoftransformation":"2020-03-03T13:06:55.95Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.652Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/796","datestamp":"2018-11-05T13:36:54Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Redes sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"III Liga de Debate CICAE","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Instantaneidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información periodística","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Fake news","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Jorge Gallardo - Liga de Debate CICAE","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Jorge Gallardo, profesor de Derecho en la Universidad Camilo José Cela (UCJC), Doctor en Comunicación Audiovisual y MBA en Empresas Audiovisuales. Subdirector de Espejo Público en Antena 3 Noticias. \n\nEn esta ocasión, Jorge Gallardo habla sobre las redes sociales, cómo han transformado la manera en la que nos comunicamos y nos informamos. \n\nIII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la tercera edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/796"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872001,"id":"50|od______3989::d791339867bec6d3eb2104deeb4e4961","originalId":["od______3989::d791339867bec6d3eb2104deeb4e4961"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.586Z","dateoftransformation":"2020-03-03T13:06:57.721Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.586Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/645","datestamp":"2018-04-12T07:59:27Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Transferencia de Conocimiento e Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Tecnología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"UCJC Open Science Day 2018","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"El UCJC Open Science Day tiene como objetivo mostrar las actividades de investigación llevadas a cabo por investigadores de la Universidad Camilo José Cela (UCJC) a todos los miembros de la UCJC.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/645"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json new file mode 100644 index 000000000..ae580eab9 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Treino de Jovens","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Iniciação Desportiva","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424163,"id":"50|od______2017::225a8382b6a3db76fba97c2dc146f937","originalId":["od______2017::225a8382b6a3db76fba97c2dc146f937"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:26:56.251Z","dateoftransformation":"2019-11-30T04:20:01.127Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:26:56.251Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/3290","datestamp":"2016-07-14T02:01:33Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Millenium","name":null,"surname":null,"rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Referências bibliográficas ao estilo APA","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/3290"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424299,"id":"50|od______2017::241d59362b075000e89d276e7bb6badc","originalId":["od______2017::241d59362b075000e89d276e7bb6badc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-09-06T04:39:29.25Z","dateoftransformation":"2019-11-30T04:20:01.631Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-09-06T04:39:29.25Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1190","datestamp":"2019-09-04T02:00:41Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Menezes, Luís","name":"Luís","surname":"Menezes","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, António","name":"António","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Martins, Ana Patrícia","name":"Ana Patrícia","surname":"Martins","rank":3,"pid":null,"affiliation":null},{"fullname":"Rodrigues, Cátia","name":"Cátia","surname":"Rodrigues","rank":4,"pid":null,"affiliation":null},{"fullname":"Gomes, Helena","name":"Helena","surname":"Gomes","rank":5,"pid":null,"affiliation":null},{"fullname":"Novo, Sónia","name":"Sónia","surname":"Novo","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Matemática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Capacidades tranversais","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Penso, comunico, resolvo","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Esta brochura destina-se a alunos do ensino básico (1.º a 9.º anos), tendo como objetivo fornecer informação sobre as capacidades transversais que o novo Programa de Matemática português (2007) veio destacar.\nEscola Superior de Educação de Viseu","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"ESEV","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/fake"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1190"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424626,"id":"50|od______2017::28fe553056801d4a764edac6bec334ec","originalId":["od______2017::28fe553056801d4a764edac6bec334ec"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:03.799Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5432","datestamp":"2019-02-23T03:01:24Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":3,"pid":null,"affiliation":null},{"fullname":"Jopp, Daniela","name":"Daniela","surname":"Jopp","rank":4,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Europe","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians in Europe","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"In the last decade, the number of centenarians world- wide has increased. Following this tendency, the number of centenarian studies has also exponentially augmented. Given the complexity to conduct research with centenarians, elementary information on this specific age group remains unknown at a European level. This paper compares basic characteristics of centenarians from 32 European coun- tries based on Census 2011. Results revealed that France is the country with higher ratio of centenarians, followed by Italy and Greece; on the other hand Croatia, Romania and Bulgaria present the lower ratio. The distribution accord- ing to gender is similar for all countries, with higher ratio of women reaching 100 years old. Different patterns of education level were found on countries where this infor- mation was reliable: Portugal and Greece are the countries with lower levels of education, with more than half without formal education; Finland, UK and Iceland are the countries with higher levels of education, with all centenarians having at least lower secondary education. Analysing the residence situation (living in the community or living in the institu- tion), Romania, Bulgaria, Lithuania, Greece and Latvia are the countries that present higher percentages of centenarians living in the community; Iceland is the country with lower percentage of centenarians living in the community. A posi- tive correlation between the number of centenarians and the percentage of Total Health Expenditure of GDP is observed. This study provides important information about the current profile of European centenarians, which is compared to gen- eral information on the centenarian population from EUA and Asia.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5432"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424730,"id":"50|od______2017::2a777b5c11f070ece546d75162047179","originalId":["od______2017::2a777b5c11f070ece546d75162047179"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:04.285Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5428","datestamp":"2019-02-23T03:01:30Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":3,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"100 years old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Survival after 100 years of age in Portuguese centenarians","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The group of individuals aged 80 and over is growing faster than other segment of the population, and within this group the number of centenarians has risen exponentially worldwide. This phenomena lead to an increasing number of centenarian studies, improving the knowledge about this population, validating the idea of heterogeneity that char- acterizes this group. However, the factors influencing their aging survival remains understudied. The present study aims to identify factors associated with survival after 100 years old in a sample of Portuguese centenarians. After being included in a population-based study on centenarians (PT100–Oporto Centenarian Study), each participant was assessed by a tel- ephone interview every 6 months in order to assess his/her health condition. Follow-up was considered as the time (in months) between 100th birthday and death or the last tel- ephone contact. Survival analysis was performed to iden- tify factors associated with survival after 100 years old. Sociological and medical factors were considered. 140 cen- tenarians were assessed and 115 (82.1%) died. The median survival time after 100 years old was 38 months. Survival after age 100 was associated with acute disease (last month), self-perception of physical condition and drinking status. This study intends do identify factors that predict longevity in long-lived individuals. Findings recognize the importance of factors related with health status, self-perception of physi- cal condition and life style (no alcohol consume) for survival. Further studies should explore the predictive value of these factors, as well as psychosocial aspects, considering living longer but also the quality of time beyond one hundred.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5428"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055426968,"id":"50|od______2017::48eb86b38e6e2cfb94bf0a4663848c10","originalId":["od______2017::48eb86b38e6e2cfb94bf0a4663848c10"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.995Z","dateoftransformation":"2019-11-30T04:20:13.611Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.995Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5416","datestamp":"2019-02-23T03:01:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":3,"pid":null,"affiliation":null},{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":4,"pid":null,"affiliation":null},{"fullname":"Azevedo, Maria João","name":"Maria João","surname":"Azevedo","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognition","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Functional capacity","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Cognition and functionality: how do they related to time lived after 100 years of age?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The number of centenarians has greatly increased in Portugal in the last decades. Therefore, the analysis of survival time after becoming a centenarian and related factors constitute an import- ant issue for the quality of care provision. The objective of this study is to identify health related factors associated with the time lived after being 100 years of age. Methods: Data come from the population-based study PT100 (Oporto Centenarian Study) and considers information gathered through face-to-face interviews with centenarians and their proxies during 2013. Study eligibility criteria included being 100 and more years old and living in the Oporto Metropolitan Area. Survival analyses were performed in order to identify factors associated with survival after the 100. Functional status (e.g., walking, being bedrid- den) and specific health conditions (e.g. presence/absence of cognitive impairment) were considered as potential factors. Results: The sam- ple comprises 140 centenarians with approximately 14.5 months as median survival time after their 100th anniversary. Centenarians who were bedridden presented a higher probability to live after 100 years when compared with functionally independent centenarians. Presence of cognitive impairment was not associated with the time lived after 100 years old. Conclusions: Given the increasing number of centenarians in Portugal, different studies based on this population need to be consid- ered. The present study, focused on the life after 100 years old, provides new information about this topic contributing to the formulation of new scientific questions for this population.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5416"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055427049,"id":"50|od______2017::4a1bcdd965b879fbac86a7d3b947a6cc","originalId":["od______2017::4a1bcdd965b879fbac86a7d3b947a6cc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:24:51.637Z","dateoftransformation":"2019-11-30T04:20:13.727Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:24:51.637Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/995","datestamp":"2014-07-15T01:00:31Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Oliveira, Ana Maria","name":"Ana Maria","surname":"Oliveira","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognição e Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Processamento da Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Processar a Linguagem através dos Sentidos: entre a doçura e a amargura","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Instituto de Literatura Comparada Margarida Losa – Faculdade de Letras da Universidade do Porto","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0010","classname":"Lecture","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/995"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json new file mode 100644 index 000000000..390ad6f16 --- /dev/null +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json @@ -0,0 +1,10 @@ +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "aaaa","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055728345,"id":"50|od______1582::626bf0af9988f811e6290d694587edf5","originalId":["od______1582::626bf0af9988f811e6290d694587edf5"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:57:53.59Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:396375","datestamp":"2018-12-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Chades, Iadine","name":"Iadine","surname":"Chades","rank":1,"pid":null,"affiliation":null},{"fullname":"Chapron, Guillaume","name":"Guillaume","surname":"Chapron","rank":2,"pid":null,"affiliation":null},{"fullname":"Cros, Marie-Josee","name":"Marie-Josee","surname":"Cros","rank":3,"pid":null,"affiliation":null},{"fullname":"Garcia, Frederick","name":"Frederick","surname":"Garcia","rank":4,"pid":null,"affiliation":null},{"fullname":"Sabbadin, Regis","name":"Regis","surname":"Sabbadin","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"jupyter","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The Markov Decision Processes (MDP) toolbox proposes functions related to the resolution of discrete-time Markov Decision Processes: finite horizon, value iteration, policy iteration, linear programming algorithms with some variants and also proposes some functions related to Reinforcement Learning.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/396375"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055729488,"id":"50|od______1582::639909adfad9d708308f2aedb733e4a0","originalId":["od______1582::639909adfad9d708308f2aedb733e4a0"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:50:56.823Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:408837","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Becheler, Ronan","name":"Ronan","surname":"Becheler","rank":1,"pid":null,"affiliation":null},{"fullname":"Masson, Jean-Pierre","name":"Jean-Pierre","surname":"Masson","rank":2,"pid":null,"affiliation":null},{"fullname":"Arnaud-Haond, Sophie","name":"Sophie","surname":"Arnaud-Haond","rank":3,"pid":null,"affiliation":null},{"fullname":"Halkett, Fabien","name":"Fabien","surname":"Halkett","rank":4,"pid":null,"affiliation":null},{"fullname":"Mariette, Stéphanie","name":"Stéphanie","surname":"Mariette","rank":5,"pid":null,"affiliation":null},{"fullname":"Guillemin, Marie-Laure","name":"Marie-Laure","surname":"Guillemin","rank":6,"pid":null,"affiliation":null},{"fullname":"Valero, Myriam","name":"Myriam","surname":"Valero","rank":7,"pid":null,"affiliation":null},{"fullname":"Destombe, Christophe","name":"Christophe","surname":"Destombe","rank":8,"pid":null,"affiliation":null},{"fullname":"Stoeckel, Solenn","name":"Solenn","surname":"Stoeckel","rank":9,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"clonalite","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"eucaryote","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"reproduction clonale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche bayésienne","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"écologie végétale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"logiciel","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"endogamie","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"autoincompatibilité","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"ClonEstiMate 1.01","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"ClonEstiMate, a Bayesian method for quantifying rates of clonality of populations genotyped at two-time steps","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/408837"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055738736,"id":"50|od______1582::6e7a9b21a2feef45673890432af34244","originalId":["od______1582::6e7a9b21a2feef45673890432af34244"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:53:57.871Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:403174","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Delenne, Jean-Yves","name":"Jean-Yves","surname":"Delenne","rank":1,"pid":null,"affiliation":null},{"fullname":"Richefeu, Vincent","name":"Vincent","surname":"Richefeu","rank":2,"pid":null,"affiliation":null},{"fullname":"Frank, Xavier","name":"Xavier","surname":"Frank","rank":3,"pid":null,"affiliation":null},{"fullname":"Radjaï, Farhang","name":"Farhang","surname":"Radjaï","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Modélisation et simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Modeling and Simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"structure granulaire","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"algorithme","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"simulation numérique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de gaz","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de liquide","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Flowbox","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The code FLOWbox is dedicated to the computation of flow through porous and granular materials.\nFLOWbox is based on an optimized 3D Lattice Boltzmann algorithm for the computation of liquid or gas flows directly at the scale of heterogeneities. FLOWbox intends to be a powerful and versatile software able to operate on highly detailed microstructures in a systematic fashion. These microstructures can be generated either from numerical simulation or from tomography.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/403174"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055741711,"id":"50|od______1582::71dd00de0e70764d2800a766c0b165db","originalId":["od______1582::71dd00de0e70764d2800a766c0b165db"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:35:31.489Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442564","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Lortal, Sylvie","name":"Sylvie","surname":"Lortal","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Charte graphique et site web MILK International Symposium","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442564"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055745351,"id":"50|od______1582::764d9ba73f2f3e794e00a80b075330ef","originalId":["od______1582::764d9ba73f2f3e794e00a80b075330ef"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:41:37.345Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407117","datestamp":"2018-05-28T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Favre, Colette","name":"Colette","surname":"Favre","rank":1,"pid":null,"affiliation":null},{"fullname":"Grel, Audrey","name":"Audrey","surname":"Grel","rank":2,"pid":null,"affiliation":null},{"fullname":"Granier, Evelyne","name":"Evelyne","surname":"Granier","rank":3,"pid":null,"affiliation":null},{"fullname":"Cosserat-Mangeot, Régine","name":"Régine","surname":"Cosserat-Mangeot","rank":4,"pid":null,"affiliation":null},{"fullname":"Bachacou, Jean","name":"Jean","surname":"Bachacou","rank":5,"pid":null,"affiliation":null},{"fullname":"LEROY, Nathalie","name":"Nathalie","surname":"Leroy","rank":6,"pid":null,"affiliation":null},{"fullname":"Dupouey, Jean-Luc","name":"Jean-Luc","surname":"Dupouey","rank":7,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"fra/fre","classname":"French","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"digitalisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"carte des sols","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"géoréférencement","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vectorisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"France","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"usage du sol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Digitalisation des cartes anciennes : Manuel pour la vectorisation de l'usage des sols et le géo-référencement des minutes 1:40 000 de la carte d' Etat-Major","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407117"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} From dfbd2bcbea332606b82968136eb98316a47359e7 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 18:34:03 +0200 Subject: [PATCH 32/83] [EOSC TAG] added logic in case subject is null --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index ea7e77e39..16baf70a6 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -14,6 +14,9 @@ import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Optional; import static eu.dnetlib.dhp.PropagationConstant.readPath; @@ -72,11 +75,17 @@ public class SparkEoscTag { readPath(spark, inputPath + "/software", Software.class) .map((MapFunction) s -> { + List sbject; + if (!Optional.ofNullable(s.getSubject()).isPresent()) + s.setSubject(new ArrayList<>()); + sbject = s.getSubject(); + if(containsCriteriaNotebook(s)){ - s.getSubject().add(EOSC_NOTEBOOK); + sbject.add(EOSC_NOTEBOOK); + } if(containsCriteriaGalaxy(s)){ - s.getSubject().add(EOSC_GALAXY); + sbject.add(EOSC_GALAXY); } return s; }, Encoders.bean(Software.class) ) @@ -94,11 +103,15 @@ public class SparkEoscTag { readPath(spark, inputPath + "/otherresearchproduct", OtherResearchProduct.class) .map((MapFunction) orp -> { + List sbject; + if (!Optional.ofNullable(orp.getSubject()).isPresent()) + orp.setSubject(new ArrayList<>()); + sbject = orp.getSubject(); if(containsCriteriaGalaxy(orp)){ - orp.getSubject().add(EOSC_GALAXY); + sbject.add(EOSC_GALAXY); } if(containscriteriaTwitter(orp)){ - orp.getSubject().add(EOSC_TWITTER); + sbject.add(EOSC_TWITTER); } return orp; }, Encoders.bean(OtherResearchProduct.class)) @@ -115,8 +128,12 @@ public class SparkEoscTag { readPath(spark, inputPath + "/dataset", Dataset.class) .map((MapFunction) d -> { + List sbject; + if (!Optional.ofNullable(d.getSubject()).isPresent()) + d.setSubject(new ArrayList<>()); + sbject = d.getSubject(); if(containscriteriaTwitter(d)){ - d.getSubject().add(EOSC_TWITTER); + sbject.add(EOSC_TWITTER); } return d; } , Encoders.bean(Dataset.class) ) From 88562c0930dd65eef55e026ae2a299b56eeddeb5 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 18:35:03 +0200 Subject: [PATCH 33/83] [EOSC TAG] added test for galaxy for title and description criterias --- .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java index 82ac9f751..2c2334a6c 100644 --- a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -166,4 +166,84 @@ public class EOSCTagJobTest { } + @Test + void galaxyUpdatesTest() throws Exception { + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/software").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), Encoders.bean(Software.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/software"); + + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/dataset").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), Encoders.bean(Dataset.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/dataset"); + + spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct").getPath()) + .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, OtherResearchProduct.class), Encoders.bean(OtherResearchProduct.class)) + .write() + .option("compression","gzip") + .json(workingDir.toString() + "/input/otherresearchproduct"); + + SparkEoscTag + .main( + new String[] { + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", + workingDir.toString() + "/input", + "-workingPath", workingDir.toString() + "/working" + + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/input/software") + .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); + + Assertions.assertEquals(10, tmp.count()); + + Assertions.assertEquals(2, tmp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))).count()); + + Assertions.assertEquals(2, tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + + Assertions.assertEquals(6, tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + Assertions.assertEquals(8, tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() + .get(0).getSubject().size()); + Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + JavaRDD orp = sc.textFile(workingDir.toString() + "/input/otherresearchproduct").map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); + + Assertions.assertEquals(10, orp.count()); + + Assertions.assertEquals(2, orp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))).count()); + + + Assertions.assertEquals(3, orp.filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(orp.filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + Assertions.assertEquals(2, orp.filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")).collect() + .get(0).getSubject().size()); + Assertions.assertFalse(orp.filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + Assertions.assertEquals(3, orp.filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")).collect() + .get(0).getSubject().size()); + Assertions.assertTrue(orp.filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")).collect() + .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + + } + } From e342ec93f00e7ff5a042c700ce6a5e20ec364c30 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Fri, 22 Apr 2022 18:35:37 +0200 Subject: [PATCH 34/83] [EOSCTag] prepared resources for test --- .../otherresearchproduct/otherresearchproduct_10.json | 6 +++--- .../dnetlib/dhp/eosctag/galaxy/software/software_10.json | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json index ae580eab9..d6b4603d5 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct/otherresearchproduct_10.json @@ -1,6 +1,6 @@ -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This galaxy workflow is for , onde estão incluídos onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the galaxy in the community to studcentenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"galaxy framwork and software is itself aging, and achieving an adva an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Treino de Jovens","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Iniciação Desportiva","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424163,"id":"50|od______2017::225a8382b6a3db76fba97c2dc146f937","originalId":["od______2017::225a8382b6a3db76fba97c2dc146f937"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:26:56.251Z","dateoftransformation":"2019-11-30T04:20:01.127Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:26:56.251Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/3290","datestamp":"2016-07-14T02:01:33Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Millenium","name":null,"surname":null,"rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Referências bibliográficas ao estilo APA","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/3290"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424299,"id":"50|od______2017::241d59362b075000e89d276e7bb6badc","originalId":["od______2017::241d59362b075000e89d276e7bb6badc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-09-06T04:39:29.25Z","dateoftransformation":"2019-11-30T04:20:01.631Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-09-06T04:39:29.25Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1190","datestamp":"2019-09-04T02:00:41Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Menezes, Luís","name":"Luís","surname":"Menezes","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, António","name":"António","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Martins, Ana Patrícia","name":"Ana Patrícia","surname":"Martins","rank":3,"pid":null,"affiliation":null},{"fullname":"Rodrigues, Cátia","name":"Cátia","surname":"Rodrigues","rank":4,"pid":null,"affiliation":null},{"fullname":"Gomes, Helena","name":"Helena","surname":"Gomes","rank":5,"pid":null,"affiliation":null},{"fullname":"Novo, Sónia","name":"Sónia","surname":"Novo","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Matemática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Capacidades tranversais","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Penso, comunico, resolvo","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Esta brochura destina-se a alunos do ensino básico (1.º a 9.º anos), tendo como objetivo fornecer informação sobre as capacidades transversais que o novo Programa de Matemática português (2007) veio destacar.\nEscola Superior de Educação de Viseu","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"ESEV","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/fake"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1190"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json index 390ad6f16..7c7c52495 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json @@ -1,10 +1,10 @@ -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "aaaa","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "aaaa","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Galaxy workflow et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Software galaxy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Galaxy Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055728345,"id":"50|od______1582::626bf0af9988f811e6290d694587edf5","originalId":["od______1582::626bf0af9988f811e6290d694587edf5"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:57:53.59Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:396375","datestamp":"2018-12-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Chades, Iadine","name":"Iadine","surname":"Chades","rank":1,"pid":null,"affiliation":null},{"fullname":"Chapron, Guillaume","name":"Guillaume","surname":"Chapron","rank":2,"pid":null,"affiliation":null},{"fullname":"Cros, Marie-Josee","name":"Marie-Josee","surname":"Cros","rank":3,"pid":null,"affiliation":null},{"fullname":"Garcia, Frederick","name":"Frederick","surname":"Garcia","rank":4,"pid":null,"affiliation":null},{"fullname":"Sabbadin, Regis","name":"Regis","surname":"Sabbadin","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"jupyter","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The Markov Decision Processes (MDP) toolbox proposes functions related to the resolution of discrete-time Markov Decision Processes: finite horizon, value iteration, policy iteration, linear programming algorithms with some variants and also proposes some functions related to Reinforcement Learning.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/396375"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055729488,"id":"50|od______1582::639909adfad9d708308f2aedb733e4a0","originalId":["od______1582::639909adfad9d708308f2aedb733e4a0"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:50:56.823Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:408837","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Becheler, Ronan","name":"Ronan","surname":"Becheler","rank":1,"pid":null,"affiliation":null},{"fullname":"Masson, Jean-Pierre","name":"Jean-Pierre","surname":"Masson","rank":2,"pid":null,"affiliation":null},{"fullname":"Arnaud-Haond, Sophie","name":"Sophie","surname":"Arnaud-Haond","rank":3,"pid":null,"affiliation":null},{"fullname":"Halkett, Fabien","name":"Fabien","surname":"Halkett","rank":4,"pid":null,"affiliation":null},{"fullname":"Mariette, Stéphanie","name":"Stéphanie","surname":"Mariette","rank":5,"pid":null,"affiliation":null},{"fullname":"Guillemin, Marie-Laure","name":"Marie-Laure","surname":"Guillemin","rank":6,"pid":null,"affiliation":null},{"fullname":"Valero, Myriam","name":"Myriam","surname":"Valero","rank":7,"pid":null,"affiliation":null},{"fullname":"Destombe, Christophe","name":"Christophe","surname":"Destombe","rank":8,"pid":null,"affiliation":null},{"fullname":"Stoeckel, Solenn","name":"Solenn","surname":"Stoeckel","rank":9,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"clonalite","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"eucaryote","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"reproduction clonale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche bayésienne","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"écologie végétale","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"logiciel","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"endogamie","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"autoincompatibilité","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"ClonEstiMate 1.01","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"ClonEstiMate, a Bayesian method for quantifying rates of clonality of populations genotyped at two-time steps","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/408837"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055738736,"id":"50|od______1582::6e7a9b21a2feef45673890432af34244","originalId":["od______1582::6e7a9b21a2feef45673890432af34244"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:53:57.871Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:403174","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Delenne, Jean-Yves","name":"Jean-Yves","surname":"Delenne","rank":1,"pid":null,"affiliation":null},{"fullname":"Richefeu, Vincent","name":"Vincent","surname":"Richefeu","rank":2,"pid":null,"affiliation":null},{"fullname":"Frank, Xavier","name":"Xavier","surname":"Frank","rank":3,"pid":null,"affiliation":null},{"fullname":"Radjaï, Farhang","name":"Farhang","surname":"Radjaï","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Modélisation et simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Modeling and Simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"structure granulaire","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"algorithme","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"simulation numérique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de gaz","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de liquide","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Flowbox","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The code FLOWbox is dedicated to the computation of flow through porous and granular materials.\nFLOWbox is based on an optimized 3D Lattice Boltzmann algorithm for the computation of liquid or gas flows directly at the scale of heterogeneities. FLOWbox intends to be a powerful and versatile software able to operate on highly detailed microstructures in a systematic fashion. These microstructures can be generated either from numerical simulation or from tomography.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/403174"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055741711,"id":"50|od______1582::71dd00de0e70764d2800a766c0b165db","originalId":["od______1582::71dd00de0e70764d2800a766c0b165db"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:35:31.489Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442564","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Lortal, Sylvie","name":"Sylvie","surname":"Lortal","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Charte graphique et site web MILK International Symposium","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442564"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055745351,"id":"50|od______1582::764d9ba73f2f3e794e00a80b075330ef","originalId":["od______1582::764d9ba73f2f3e794e00a80b075330ef"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:41:37.345Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407117","datestamp":"2018-05-28T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Favre, Colette","name":"Colette","surname":"Favre","rank":1,"pid":null,"affiliation":null},{"fullname":"Grel, Audrey","name":"Audrey","surname":"Grel","rank":2,"pid":null,"affiliation":null},{"fullname":"Granier, Evelyne","name":"Evelyne","surname":"Granier","rank":3,"pid":null,"affiliation":null},{"fullname":"Cosserat-Mangeot, Régine","name":"Régine","surname":"Cosserat-Mangeot","rank":4,"pid":null,"affiliation":null},{"fullname":"Bachacou, Jean","name":"Jean","surname":"Bachacou","rank":5,"pid":null,"affiliation":null},{"fullname":"LEROY, Nathalie","name":"Nathalie","surname":"Leroy","rank":6,"pid":null,"affiliation":null},{"fullname":"Dupouey, Jean-Luc","name":"Jean-Luc","surname":"Dupouey","rank":7,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"fra/fre","classname":"French","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"digitalisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"carte des sols","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"géoréférencement","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vectorisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"France","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"usage du sol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Digitalisation des cartes anciennes : Manuel pour la vectorisation de l'usage des sols et le géo-référencement des minutes 1:40 000 de la carte d' Etat-Major","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407117"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} \ No newline at end of file From 8c22e5c30a45272196da8a15dc41e408bfd551e7 Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Tue, 26 Apr 2022 09:56:27 +0200 Subject: [PATCH 35/83] added fix to include date array with only year or year and month --- .../doiboost/crossref/Crossref2Oaf.scala | 13 +- .../dnetlib/doiboost/crossref/issue_date.json | 330 ++++++++++++++++++ .../crossref/CrossrefMappingTest.scala | 16 +- 3 files changed, 355 insertions(+), 4 deletions(-) create mode 100644 dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/issue_date.json diff --git a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala index b4d6d67e2..0ba77ca84 100644 --- a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala +++ b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala @@ -2,7 +2,7 @@ package eu.dnetlib.doiboost.crossref import eu.dnetlib.dhp.schema.common.ModelConstants import eu.dnetlib.dhp.schema.oaf._ -import eu.dnetlib.dhp.schema.oaf.utils.{IdentifierFactory, OafMapperUtils} +import eu.dnetlib.dhp.schema.oaf.utils.{GraphCleaningFunctions, IdentifierFactory, OafMapperUtils} import eu.dnetlib.dhp.utils.DHPUtils import eu.dnetlib.doiboost.DoiBoostMappingUtil import eu.dnetlib.doiboost.DoiBoostMappingUtil._ @@ -576,15 +576,22 @@ case object Crossref2Oaf { def extractDate(dt: String, datePart: List[List[Int]]): String = { if (StringUtils.isNotBlank(dt)) - return dt + return GraphCleaningFunctions.cleanDate(dt) if (datePart != null && datePart.size == 1) { val res = datePart.head if (res.size == 3) { val dp = f"${res.head}-${res(1)}%02d-${res(2)}%02d" if (dp.length == 10) { - return dp + return GraphCleaningFunctions.cleanDate(dp) } } + else if (res.size ==2) { + val dp = f"${res.head}-${res(1)}%02d-01" + return GraphCleaningFunctions.cleanDate(dp) + } + else if (res.size ==1) { + return GraphCleaningFunctions.cleanDate(s"${res.head}-01-01") + } } null diff --git a/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/issue_date.json b/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/issue_date.json new file mode 100644 index 000000000..d74b2c167 --- /dev/null +++ b/dhp-workflows/dhp-doiboost/src/test/resources/eu/dnetlib/doiboost/crossref/issue_date.json @@ -0,0 +1,330 @@ +{ + "indexed":{ + "date-parts":[ + [ + 2022, + 4, + 14 + ] + ], + "date-time":"2022-04-14T11:27:30Z", + "timestamp":1649935650109 + }, + "reference-count":22, + "publisher":"SAGE Publications", + "issue":"2", + "license":[ + { + "start":{ + "date-parts":[ + [ + 1980, + 4, + 1 + ] + ], + "date-time":"1980-04-01T00:00:00Z", + "timestamp":323395200000 + }, + "content-version":"tdm", + "delay-in-days":0, + "URL":"http:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license" + } + ], + "content-domain":{ + "domain":[ + + ], + "crossmark-restriction":false + }, + "short-container-title":[ + "Perception" + ], + "published-print":{ + "date-parts":[ + [ + 1980, + 4 + ] + ] + }, + "abstract":" To answer the question \u2018What is suppressed during binocular rivalry?\u2019 a series of three experiments was performed. In the first experiment observers viewed binocular rivalry between orthogonally oriented patterns. When the dominant and suppressed patterns were interchanged between the eyes observers continued seeing with the dominant eye, indicating that an eye, not a pattern, is suppressed during rivalry. In a second experiment it was found that a suppressed eye was able to contribute to stereopsis. A third experiment demonstrated that the predominance of an eye could be influenced by prior adaptation of the other eye, indicating that binocular mechanisms participate in the rivalry process. <\/jats:p>", + "DOI":"10.1068\/p090223", + "type":"journal-article", + "created":{ + "date-parts":[ + [ + 2007, + 1, + 23 + ] + ], + "date-time":"2007-01-23T15:21:36Z", + "timestamp":1169565696000 + }, + "page":"223-231", + "source":"Crossref", + "is-referenced-by-count":123, + "title":[ + "What is Suppressed during Binocular Rivalry?" + ], + "prefix":"10.1177", + "volume":"9", + "author":[ + { + "given":"Randolph", + "family":"Blake", + "sequence":"first", + "affiliation":[ + { + "name":"Cresap Neuroscience Laboratory, Northwestern University, Evanston, Illinois 60201, USA" + } + ] + }, + { + "given":"David H", + "family":"Westendorf", + "sequence":"additional", + "affiliation":[ + { + "name":"Department of Psychology, University of Arkansas, Fayetteville, Arkansas 72701, USA" + } + ] + }, + { + "given":"Randall", + "family":"Overton", + "sequence":"additional", + "affiliation":[ + { + "name":"Department of Psychology, Illinois State University, Normal, Illinois 61761, USA" + } + ] + } + ], + "member":"179", + "published-online":{ + "date-parts":[ + [ + 2016, + 6, + 25 + ] + ] + }, + "reference":[ + { + "key":"bibr1-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1136\/bjo.37.1.37" + }, + { + "key":"bibr2-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1037\/0096-1523.5.2.315" + }, + { + "key":"bibr3-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1016\/0042-6989(74)90065-0" + }, + { + "key":"bibr4-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1068\/p080143" + }, + { + "key":"bibr5-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1016\/0042-6989(70)90036-2" + }, + { + "key":"bibr6-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1113\/jphysiol.1969.sp008862" + }, + { + "key":"bibr7-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1113\/jphysiol.1972.sp010006" + }, + { + "key":"bibr8-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1146\/annurev.ps.23.020172.002213" + }, + { + "key":"bibr9-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1126\/science.166.3902.245" + }, + { + "key":"bibr10-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1037\/h0075805" + }, + { + "key":"bibr11-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1113\/jphysiol.1968.sp008552" + }, + { + "key":"bibr12-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1113\/jphysiol.1965.sp007784" + }, + { + "key":"bibr13-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1037\/h0032455" + }, + { + "key":"bibr14-p090223", + "volume-title":"Treatise on Physiological Optics", + "volume":"3", + "author":"von Helmholtz H", + "year":"1866", + "edition":"3" + }, + { + "key":"bibr15-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1068\/p040125" + }, + { + "key":"bibr16-p090223", + "volume-title":"On Binocular Rivalry", + "author":"Levelt W J M", + "year":"1965" + }, + { + "key":"bibr17-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1001\/archopht.1935.00840020011001" + }, + { + "key":"bibr18-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.3758\/BF03205796" + }, + { + "key":"bibr19-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.3758\/BF03210180" + }, + { + "key":"bibr20-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1037\/0033-2909.85.2.376" + }, + { + "key":"bibr21-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.1016\/0042-6989(79)90169-X" + }, + { + "key":"bibr22-p090223", + "doi-asserted-by":"publisher", + "DOI":"10.3758\/BF03210465" + } + ], + "container-title":[ + "Perception" + ], + "original-title":[ + + ], + "language":"en", + "link":[ + { + "URL":"http:\/\/journals.sagepub.com\/doi\/pdf\/10.1068\/p090223", + "content-type":"application\/pdf", + "content-version":"vor", + "intended-application":"text-mining" + }, + { + "URL":"http:\/\/journals.sagepub.com\/doi\/pdf\/10.1068\/p090223", + "content-type":"unspecified", + "content-version":"vor", + "intended-application":"similarity-checking" + } + ], + "deposited":{ + "date-parts":[ + [ + 2021, + 12, + 3 + ] + ], + "date-time":"2021-12-03T11:49:48Z", + "timestamp":1638532188000 + }, + "score":1, + "resource":{ + "primary":{ + "URL":"http:\/\/journals.sagepub.com\/doi\/10.1068\/p090223" + } + }, + "subtitle":[ + + ], + "short-title":[ + + ], + "issued":{ + "date-parts":[ + [ + 1980, + 4 + ] + ] + }, + "references-count":22, + "journal-issue":{ + "issue":"2", + "published-print":{ + "date-parts":[ + [ + 1980, + 4 + ] + ] + } + }, + "alternative-id":[ + "10.1068\/p090223" + ], + "URL":"http:\/\/dx.doi.org\/10.1068\/p090223", + "relation":{ + + }, + "ISSN":[ + "0301-0066", + "1468-4233" + ], + "issn-type":[ + { + "value":"0301-0066", + "type":"print" + }, + { + "value":"1468-4233", + "type":"electronic" + } + ], + "subject":[ + "Artificial Intelligence", + "Sensory Systems", + "Experimental and Cognitive Psychology", + "Ophthalmology" + ], + "published":{ + "date-parts":[ + [ + 1980, + 4 + ] + ] + } +} \ No newline at end of file diff --git a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala index 8124a5aae..9025cd6d2 100644 --- a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala +++ b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala @@ -73,6 +73,20 @@ class CrossrefMappingTest { } + + @Test + def crossrefIssueDateTest(): Unit = { + val json = Source.fromInputStream(getClass.getResourceAsStream("/eu/dnetlib/doiboost/crossref/issue_date.json")).mkString + assertNotNull(json) + assertFalse(json.isEmpty) + val resultList: List[Oaf] = Crossref2Oaf.convert(json) + assertTrue(resultList.nonEmpty) + + val items = resultList.filter(p => p.isInstanceOf[Result]) + + println(mapper.writeValueAsString(items.head)) + } + @Test def testOrcidID(): Unit = { val json = Source @@ -82,7 +96,7 @@ class CrossrefMappingTest { .mkString assertNotNull(json) - assertFalse(json.isEmpty); + assertFalse(json.isEmpty) val resultList: List[Oaf] = Crossref2Oaf.convert(json) From 5ffc24d1baead98eea96bb50bcef12488fcda3f1 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 26 Apr 2022 16:18:41 +0200 Subject: [PATCH 36/83] EOSC Services - ongoing update --- .../raw/MigrateDbEntitiesApplication.java | 6 +-- .../dhp/oa/graph/sql/queryServices.sql | 51 +++++++++++++------ .../raw/MigrateDbEntitiesApplicationTest.java | 4 +- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index b5801ca5c..b1be7f10a 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -143,8 +143,8 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i smdbe.execute("queryClaims.sql", smdbe::processClaims); break; case openaire: - log.info("Processing datasources..."); - smdbe.execute("queryDatasources.sql", smdbe::processDatasource, verifyNamespacePrefix); + log.info("Processing services..."); + smdbe.execute("queryServices.sql", smdbe::processService, verifyNamespacePrefix); log.info("Processing projects..."); if (dbSchema.equalsIgnoreCase("beta")) { @@ -235,7 +235,7 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i dbClient.processResults(sql, consumer); } - public List processDatasource(final ResultSet rs) { + public List processService(final ResultSet rs) { try { final DataInfo info = prepareDataInfo(rs); diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index 81be79420..603b1e9b2 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -1,6 +1,6 @@ SELECT d.id AS datasourceid, - d.id || array_agg(distinct di.pid) AS identities, + array_remove(d.id || array_agg(distinct di.pid) filter (where di.pid like 'piwik%') || array_agg(distinct dds.duplicate), NULL) AS identities, d.officialname AS officialname, d.englishname AS englishname, d.contactemail AS contactemail, @@ -57,7 +57,8 @@ SELECT NULL AS odpolicies, ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.languages, ',')) AS s) AS odlanguages, - + ARRAY(SELECT trim(s) + FROM unnest(string_to_array(d.languages, ',')) AS s) AS languages, -- Term provided only by OpenDOAR: -- probably updating the TR it could be replaced by research_entity_types[] -- But a study on the vocabulary terms is needed @@ -74,40 +75,54 @@ SELECT d.releaseenddate AS releaseenddate, d.missionstatementurl AS missionstatementurl, -- the following 2 fields (provided by re3data) have been replaced by research_entity_types[] - -- VALUE 'Research Data' : d.dataprovider AS dataprovider, - -- VALUE 'Services' : d.serviceprovider AS serviceprovider, + -- VALUE 'Research Data' : d.dataprovider AS dataprovider, + -- VALUE 'Services' : d.serviceprovider AS serviceprovider, d.databaseaccesstype AS databaseaccesstype, d.datauploadtype AS datauploadtype, d.databaseaccessrestriction AS databaseaccessrestriction, d.datauploadrestriction AS datauploadrestriction, -- REPLACED BY version_control : d.versioning AS versioning, - d.version_control AS versioning, + d.version_control AS versioning, + d.version_control AS versioncontrol, d.citationguidelineurl AS citationguidelineurl, - -- REMOVED (it was provided only by re3data: yes, no, unknown): d.qualitymanagementkind AS qualitymanagementkind, + d.pidsystems AS pidsystems, d.certificates AS certificates, ARRAY[]::text[] AS policies, - dc.id AS collectedfromid, - dc.officialname AS collectedfromname, + array_remove(dc.id||'@@@'||dc.officialname || array_agg(distinct dds_cf.id||'@@@'||dds_cf.officialname), NULL) AS collectedfrom, + d._typology_to_remove_||'@@@dnet:datasource_typologies' AS datasourcetype, - d.eosc_type||'@@@dnet:eosc_types' AS eosc_type, - d.eosc_datasource_type||'@@@dnet:eosc_datasource_types' AS eosc_datasoorce_type, + d.eosc_type||'@@@dnet:eosc_types' AS eosctype, + d.eosc_datasource_type||'@@@dnet:eosc_datasource_types' AS eoscdatasourcetype, 'sysimport:crosswalk:entityregistry@@@dnet:provenance_actions' AS provenanceaction, d.issn AS issnPrinted, d.eissn AS issnOnline, d.lissn AS issnLinking, + d.research_entity_types AS researchentitytypes, d.consenttermsofuse AS consenttermsofuse, d.fulltextdownload AS fulltextdownload, d.consenttermsofusedate AS consenttermsofusedate, - d.jurisdiction||'@@@eosc:jurisdictions' AS jurisdiction, - d.thematic AS thematic, - -- REMOVED ???: d.knowledge_graph AS knowledgegraph, - array(select unnest(d.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies + d.lastconsenttermsofusedate AS lastconsenttermsofusedate, + d.jurisdiction||'@@@eosc:jurisdictions' AS jurisdiction, + d.thematic AS thematic, + -- REMOVED ???: d.knowledge_graph AS knowledgegraph, + array(select unnest(d.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies, + d.submission_policy_url AS submissionpolicyurl, + d.preservation_policy_url AS preservationpolicyurl, + d.research_product_access_policies AS researchproductaccesspolicies, + d.research_product_metadata_access_policies AS researchproductmetadataaccesspolicies FROM dsm_services d LEFT OUTER JOIN dsm_services dc on (d.collectedfrom = dc.id) LEFT OUTER JOIN dsm_api a ON (d.id = a.service) LEFT OUTER JOIN dsm_servicepids di ON (d.id = di.service) +LEFT OUTER JOIN dsm_dedup_services dds ON (d.id = dds.id) +LEFT OUTER JOIN dsm_services dds_dup ON (dds.duplicate = dds_dup.id) +LEFT OUTER JOIN dsm_services dds_cf ON (dds_dup.collectedfrom = dds_cf.id) + + +WHERE + d.dedup_main_service = true GROUP BY d.id, @@ -132,7 +147,7 @@ GROUP BY d.databaseaccessrestriction, d.datauploadrestriction, -- REPLACED BY version_control : d.versioning, - d.version_control + d.version_control, d.citationguidelineurl, -- REMOVED: d.qualitymanagementkind, d.pidsystems, @@ -145,4 +160,8 @@ GROUP BY d.jurisdiction, d.thematic, -- REMOVED ???: de.knowledge_graph, - d.content_policies + d.content_policies, + d.submission_policy_url, + d.preservation_policy_url, + d.research_product_access_policies, + d.research_product_metadata_access_policies \ No newline at end of file diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java index 05ae5be74..488a1f70b 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java @@ -63,10 +63,10 @@ public class MigrateDbEntitiesApplicationTest { } @Test - public void testProcessDatasource() throws Exception { + public void testProcessService() throws Exception { final List fields = prepareMocks("datasources_resultset_entry.json"); - final List list = app.processDatasource(rs); + final List list = app.processService(rs); assertEquals(1, list.size()); verifyMocks(fields); From 623f7be26d53063c88dc3f4946bd1d2cd1648561 Mon Sep 17 00:00:00 2001 From: Serafeim Chatzopoulos Date: Thu, 28 Apr 2022 16:31:11 +0300 Subject: [PATCH 37/83] Fix reading files from HDFS in FileCollector & FileGZipCollector plugins --- .../dhp/collection/CollectorWorker.java | 4 +-- .../file/AbstractSplittedRecordPlugin.java | 35 +++++++++++++++---- .../plugin/file/FileCollectorPlugin.java | 18 ++++++---- .../plugin/file/FileGZipCollectorPlugin.java | 21 ++++++----- .../plugin/file/FileCollectorPluginTest.java | 11 ++++-- .../file/FileGZipCollectorPluginTest.java | 29 ++++++++++----- 6 files changed, 86 insertions(+), 32 deletions(-) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java index a770af804..f6cba6fb8 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/CollectorWorker.java @@ -117,9 +117,9 @@ public class CollectorWorker extends ReportingJob { case rest_json2xml: return new RestCollectorPlugin(clientParams); case file: - return new FileCollectorPlugin(); + return new FileCollectorPlugin(fileSystem); case fileGZip: - return new FileGZipCollectorPlugin(); + return new FileGZipCollectorPlugin(fileSystem); case other: final CollectorPlugin.NAME.OTHER_NAME plugin = Optional .ofNullable(api.getParams().get("other_plugin_type")) diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java index c569926c0..97f61980a 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/AbstractSplittedRecordPlugin.java @@ -1,11 +1,11 @@ package eu.dnetlib.dhp.collection.plugin.file; import java.io.BufferedInputStream; +import java.io.IOException; import java.util.Iterator; import java.util.Optional; import java.util.Spliterator; import java.util.Spliterators; -import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -15,6 +15,8 @@ import eu.dnetlib.dhp.collection.plugin.utils.XMLIterator; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; import eu.dnetlib.dhp.common.collection.CollectorException; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,22 +26,40 @@ public abstract class AbstractSplittedRecordPlugin implements CollectorPlugin { public static final String SPLIT_ON_ELEMENT = "splitOnElement"; + private final FileSystem fileSystem; + + public AbstractSplittedRecordPlugin(FileSystem fileSystem) { + this.fileSystem = fileSystem; + } + @Override public Stream collect(ApiDescriptor api, AggregatorReport report) throws CollectorException { - final String baseUrl = Optional + // get path to file + final Path filePath = Optional .ofNullable(api.getBaseUrl()) - .orElseThrow( () -> new CollectorException("missing baseUrl, required by the AbstractSplittedRecordPlugin")); + .map(Path::new) + .orElseThrow( () -> new CollectorException("missing baseUrl")); - log.info("baseUrl: {}", baseUrl); + log.info("baseUrl: {}", filePath); + // check that path to file exists + try { + if (!fileSystem.exists(filePath)) { + throw new CollectorException("path does not exist: " + filePath); + } + } catch (IOException e) { + throw new CollectorException(e); + } + + // get split element final String splitOnElement = Optional .ofNullable(api.getParams().get(SPLIT_ON_ELEMENT)) .orElseThrow(() -> new CollectorException(String.format("missing parameter '%s', required by the AbstractSplittedRecordPlugin", SPLIT_ON_ELEMENT))); log.info("splitOnElement: {}", splitOnElement); - final BufferedInputStream bis = getBufferedInputStream(baseUrl); + final BufferedInputStream bis = getBufferedInputStream(filePath); Iterator xmlIterator = new XMLIterator(splitOnElement, bis); @@ -49,6 +69,9 @@ public abstract class AbstractSplittedRecordPlugin implements CollectorPlugin { ); } - abstract protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorException; + abstract protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException; + public FileSystem getFileSystem() { + return fileSystem; + } } \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java index 3a268eabb..d7a992038 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPlugin.java @@ -1,25 +1,31 @@ package eu.dnetlib.dhp.collection.plugin.file; import eu.dnetlib.dhp.common.collection.CollectorException; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedInputStream; -import java.io.FileInputStream; public class FileCollectorPlugin extends AbstractSplittedRecordPlugin { private static final Logger log = LoggerFactory.getLogger(FileCollectorPlugin.class); - @Override - protected BufferedInputStream getBufferedInputStream(final String baseUrl) throws CollectorException { + public FileCollectorPlugin(FileSystem fileSystem) { + super(fileSystem); + } - log.info("baseUrl: {}", baseUrl); + @Override + protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { + + log.info("filePath: {}", filePath); try { - return new BufferedInputStream(new FileInputStream(baseUrl)); + FileSystem fs = super.getFileSystem(); + return new BufferedInputStream(fs.open(filePath)); } catch (Exception e) { - throw new CollectorException("Error reading file " + baseUrl, e); + throw new CollectorException("Error reading file " + filePath, e); } } } \ No newline at end of file diff --git a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java index b2c77e8b6..b724cfefd 100644 --- a/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java +++ b/dhp-workflows/dhp-aggregation/src/main/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPlugin.java @@ -1,28 +1,33 @@ package eu.dnetlib.dhp.collection.plugin.file; import eu.dnetlib.dhp.common.collection.CollectorException; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.Path; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; +import java.io.BufferedInputStream; import java.util.zip.GZIPInputStream; public class FileGZipCollectorPlugin extends AbstractSplittedRecordPlugin { private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPlugin.class); - @Override - protected BufferedInputStream getBufferedInputStream(String baseUrl) throws CollectorException { + public FileGZipCollectorPlugin(FileSystem fileSystem) { + super(fileSystem); + } - log.info("baseUrl: {}", baseUrl); + @Override + protected BufferedInputStream getBufferedInputStream(final Path filePath) throws CollectorException { + + log.info("filePath: {}", filePath); try { - GZIPInputStream stream = new GZIPInputStream(new FileInputStream(baseUrl)); + FileSystem fs = super.getFileSystem(); + GZIPInputStream stream = new GZIPInputStream(fs.open(filePath)); return new BufferedInputStream(stream); } catch (Exception e) { - throw new CollectorException("Error reading file " + baseUrl, e); + throw new CollectorException("Error reading file " + filePath, e); } } } diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java index d9b5152fe..ed0578059 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileCollectorPluginTest.java @@ -3,12 +3,17 @@ package eu.dnetlib.dhp.collection.plugin.file; import eu.dnetlib.dhp.collection.ApiDescriptor; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; import eu.dnetlib.dhp.common.collection.CollectorException; +import net.bytebuddy.asm.Advice; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocalFileSystem; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.HashMap; import java.util.stream.Stream; @@ -17,12 +22,13 @@ public class FileCollectorPluginTest { private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); private final ApiDescriptor api = new ApiDescriptor(); + private FileCollectorPlugin plugin; private static final String SPLIT_ON_ELEMENT = "repository"; @BeforeEach - public void setUp() { + public void setUp() throws IOException { final String gzipFile = this .getClass() @@ -36,7 +42,8 @@ public class FileCollectorPluginTest { api.setParams(params); - plugin = new FileCollectorPlugin(); + FileSystem fs = FileSystem.get(new Configuration()); + plugin = new FileCollectorPlugin(fs); } @Test diff --git a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java index 18caf1c45..23f08e6ea 100644 --- a/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java +++ b/dhp-workflows/dhp-aggregation/src/test/java/eu/dnetlib/dhp/collection/plugin/file/FileGZipCollectorPluginTest.java @@ -3,30 +3,42 @@ package eu.dnetlib.dhp.collection.plugin.file; import eu.dnetlib.dhp.collection.ApiDescriptor; import eu.dnetlib.dhp.common.aggregation.AggregatorReport; import eu.dnetlib.dhp.common.collection.CollectorException; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.fs.LocalFileSystem; +import org.junit.jupiter.api.*; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; import java.util.HashMap; +import java.util.Objects; import java.util.stream.Stream; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@ExtendWith(MockitoExtension.class) public class FileGZipCollectorPluginTest { private static final Logger log = LoggerFactory.getLogger(FileGZipCollectorPluginTest.class); private final ApiDescriptor api = new ApiDescriptor(); + private FileGZipCollectorPlugin plugin; private static final String SPLIT_ON_ELEMENT = "repository"; @BeforeEach - public void setUp() { + public void setUp() throws IOException { - final String gzipFile = this - .getClass() - .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz") + final String gzipFile = Objects.requireNonNull(this + .getClass() + .getResource("/eu/dnetlib/dhp/collection/plugin/file/opendoar.xml.gz")) .getFile(); api.setBaseUrl(gzipFile); @@ -36,7 +48,8 @@ public class FileGZipCollectorPluginTest { api.setParams(params); - plugin = new FileGZipCollectorPlugin(); + FileSystem fs = FileSystem.get(new Configuration()); + plugin = new FileGZipCollectorPlugin(fs); } @Test From f5f532d134159c1e14f72811cef1aba36f80d980 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 29 Apr 2022 12:25:24 +0200 Subject: [PATCH 38/83] EOSC Services - ongoing update --- .../dhp/schema/oaf/utils/OafMapperUtils.java | 13 + .../schema/oaf/utils/OafMapperUtilsTest.java | 185 +++++++------- .../raw/MigrateDbEntitiesApplication.java | 75 ++++-- .../dhp/oa/graph/sql/queryServices.sql | 52 ++-- .../raw/MigrateDbEntitiesApplicationTest.java | 137 +++++++++-- ...try.json => services_resultset_entry.json} | 229 ++++++++++++------ .../oa/provision/utils/XmlRecordFactory.java | 6 - pom.xml | 2 +- 8 files changed, 459 insertions(+), 240 deletions(-) rename dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/{datasources_resultset_entry.json => services_resultset_entry.json} (68%) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java index 0a51e8600..aac2a7801 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtils.java @@ -3,6 +3,8 @@ package eu.dnetlib.dhp.schema.oaf.utils; import static eu.dnetlib.dhp.schema.common.ModelConstants.*; +import java.sql.Array; +import java.sql.SQLException; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; @@ -118,6 +120,17 @@ public class OafMapperUtils { .collect(Collectors.toList()); } + public static List listValues(Array values) throws SQLException { + if (Objects.isNull(values)) { + return null; + } + return Arrays + .stream((T[]) values.getArray()) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + } + public static List> listFields(final DataInfo info, final List values) { return values .stream() diff --git a/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtilsTest.java b/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtilsTest.java index 79629a171..9111ac2df 100644 --- a/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtilsTest.java +++ b/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/utils/OafMapperUtilsTest.java @@ -44,105 +44,104 @@ class OafMapperUtilsTest { @Test void testDateValidation() { - assertTrue(GraphCleaningFunctions.doCleanDate("2016-05-07T12:41:19.202Z ").isPresent()); - assertTrue(GraphCleaningFunctions.doCleanDate("2020-09-10 11:08:52 ").isPresent()); - assertTrue(GraphCleaningFunctions.doCleanDate(" 2016-04-05").isPresent()); + assertNotNull(GraphCleaningFunctions.cleanDate("2016-05-07T12:41:19.202Z ")); + assertNotNull(GraphCleaningFunctions.cleanDate("2020-09-10 11:08:52 ")); + assertNotNull(GraphCleaningFunctions.cleanDate(" 2016-04-05")); - assertEquals("2016-04-05", GraphCleaningFunctions.doCleanDate("2016 Apr 05").get()); + assertEquals("2016-04-05", GraphCleaningFunctions.cleanDate("2016 Apr 05")); - assertEquals("2009-05-08", GraphCleaningFunctions.doCleanDate("May 8, 2009 5:57:51 PM").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("oct 7, 1970").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("oct 7, '70").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("oct. 7, 1970").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("oct. 7, 70").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Mon Jan 2 15:04:05 2006").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Mon Jan 2 15:04:05 MST 2006").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Mon Jan 02 15:04:05 -0700 2006").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Monday, 02-Jan-06 15:04:05 MST").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Mon, 02 Jan 2006 15:04:05 MST").get()); - assertEquals("2017-07-11", GraphCleaningFunctions.doCleanDate("Tue, 11 Jul 2017 16:28:13 +0200 (CEST)").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("Mon, 02 Jan 2006 15:04:05 -0700").get()); - assertEquals("2018-01-04", GraphCleaningFunctions.doCleanDate("Thu, 4 Jan 2018 17:53:36 +0000").get()); - assertEquals("2015-08-10", GraphCleaningFunctions.doCleanDate("Mon Aug 10 15:44:11 UTC+0100 2015").get()); + assertEquals("2009-05-08", GraphCleaningFunctions.cleanDate("May 8, 2009 5:57:51 PM")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("oct 7, 1970")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("oct 7, '70")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("oct. 7, 1970")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("oct. 7, 70")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Mon Jan 2 15:04:05 2006")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Mon Jan 2 15:04:05 MST 2006")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Mon Jan 02 15:04:05 -0700 2006")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Monday, 02-Jan-06 15:04:05 MST")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Mon, 02 Jan 2006 15:04:05 MST")); + assertEquals("2017-07-11", GraphCleaningFunctions.cleanDate("Tue, 11 Jul 2017 16:28:13 +0200 (CEST)")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("Mon, 02 Jan 2006 15:04:05 -0700")); + assertEquals("2018-01-04", GraphCleaningFunctions.cleanDate("Thu, 4 Jan 2018 17:53:36 +0000")); + assertEquals("2015-08-10", GraphCleaningFunctions.cleanDate("Mon Aug 10 15:44:11 UTC+0100 2015")); assertEquals( "2015-07-03", - GraphCleaningFunctions.doCleanDate("Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time)").get()); - assertEquals("2012-09-17", GraphCleaningFunctions.doCleanDate("September 17, 2012 10:09am").get()); - assertEquals("2012-09-17", GraphCleaningFunctions.doCleanDate("September 17, 2012 at 10:09am PST-08").get()); - assertEquals("2012-09-17", GraphCleaningFunctions.doCleanDate("September 17, 2012, 10:10:09").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("October 7, 1970").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("October 7th, 1970").get()); - assertEquals("2006-02-12", GraphCleaningFunctions.doCleanDate("12 Feb 2006, 19:17").get()); - assertEquals("2006-02-12", GraphCleaningFunctions.doCleanDate("12 Feb 2006 19:17").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("7 oct 70").get()); - assertEquals("1970-10-07", GraphCleaningFunctions.doCleanDate("7 oct 1970").get()); - assertEquals("2013-02-03", GraphCleaningFunctions.doCleanDate("03 February 2013").get()); - assertEquals("2013-07-01", GraphCleaningFunctions.doCleanDate("1 July 2013").get()); - assertEquals("2013-02-03", GraphCleaningFunctions.doCleanDate("2013-Feb-03").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("3/31/2014").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("03/31/2014").get()); - assertEquals("1971-08-21", GraphCleaningFunctions.doCleanDate("08/21/71").get()); - assertEquals("1971-01-08", GraphCleaningFunctions.doCleanDate("8/1/71").get()); - assertEquals("2014-08-04", GraphCleaningFunctions.doCleanDate("4/8/2014 22:05").get()); - assertEquals("2014-08-04", GraphCleaningFunctions.doCleanDate("04/08/2014 22:05").get()); - assertEquals("2014-08-04", GraphCleaningFunctions.doCleanDate("4/8/14 22:05").get()); - assertEquals("2014-02-04", GraphCleaningFunctions.doCleanDate("04/2/2014 03:00:51").get()); - assertEquals("1965-08-08", GraphCleaningFunctions.doCleanDate("8/8/1965 12:00:00 AM").get()); - assertEquals("1965-08-08", GraphCleaningFunctions.doCleanDate("8/8/1965 01:00:01 PM").get()); - assertEquals("1965-08-08", GraphCleaningFunctions.doCleanDate("8/8/1965 01:00 PM").get()); - assertEquals("1965-08-08", GraphCleaningFunctions.doCleanDate("8/8/1965 1:00 PM").get()); - assertEquals("1965-08-08", GraphCleaningFunctions.doCleanDate("8/8/1965 12:00 AM").get()); - assertEquals("2014-02-04", GraphCleaningFunctions.doCleanDate("4/02/2014 03:00:51").get()); - assertEquals("2012-03-19", GraphCleaningFunctions.doCleanDate("03/19/2012 10:11:59").get()); - assertEquals("2012-03-19", GraphCleaningFunctions.doCleanDate("03/19/2012 10:11:59.3186369").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("2014/3/31").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("2014/03/31").get()); - assertEquals("2014-04-08", GraphCleaningFunctions.doCleanDate("2014/4/8 22:05").get()); - assertEquals("2014-04-08", GraphCleaningFunctions.doCleanDate("2014/04/08 22:05").get()); - assertEquals("2014-04-02", GraphCleaningFunctions.doCleanDate("2014/04/2 03:00:51").get()); - assertEquals("2014-04-02", GraphCleaningFunctions.doCleanDate("2014/4/02 03:00:51").get()); - assertEquals("2012-03-19", GraphCleaningFunctions.doCleanDate("2012/03/19 10:11:59").get()); - assertEquals("2012-03-19", GraphCleaningFunctions.doCleanDate("2012/03/19 10:11:59.3186369").get()); - assertEquals("2014-04-08", GraphCleaningFunctions.doCleanDate("2014年04月08日").get()); - assertEquals("2006-01-02", GraphCleaningFunctions.doCleanDate("2006-01-02T15:04:05+0000").get()); - assertEquals("2009-08-13", GraphCleaningFunctions.doCleanDate("2009-08-12T22:15:09-07:00").get()); - assertEquals("2009-08-12", GraphCleaningFunctions.doCleanDate("2009-08-12T22:15:09").get()); - assertEquals("2009-08-13", GraphCleaningFunctions.doCleanDate("2009-08-12T22:15:09Z").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 17:24:37.3186369").get()); - assertEquals("2012-08-03", GraphCleaningFunctions.doCleanDate("2012-08-03 18:31:59.257000000").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 17:24:37.123").get()); - assertEquals("2013-04-01", GraphCleaningFunctions.doCleanDate("2013-04-01 22:43").get()); - assertEquals("2013-04-01", GraphCleaningFunctions.doCleanDate("2013-04-01 22:43:22").get()); - assertEquals("2014-12-16", GraphCleaningFunctions.doCleanDate("2014-12-16 06:20:00 UTC").get()); - assertEquals("2014-12-16", GraphCleaningFunctions.doCleanDate("2014-12-16 06:20:00 GMT").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 05:24:37 PM").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 13:13:43 +0800").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 13:13:43 +0800 +08").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26 13:13:44 +09:00").get()); - assertEquals("2012-08-03", GraphCleaningFunctions.doCleanDate("2012-08-03 18:31:59.257000000 +0000 UTC").get()); - assertEquals("2015-09-30", GraphCleaningFunctions.doCleanDate("2015-09-30 18:48:56.35272715 +0000 UTC").get()); - assertEquals("2015-02-18", GraphCleaningFunctions.doCleanDate("2015-02-18 00:12:00 +0000 GMT").get()); - assertEquals("2015-02-18", GraphCleaningFunctions.doCleanDate("2015-02-18 00:12:00 +0000 UTC").get()); + GraphCleaningFunctions.cleanDate("Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time)")); + assertEquals("2012-09-17", GraphCleaningFunctions.cleanDate("September 17, 2012 10:09am")); + assertEquals("2012-09-17", GraphCleaningFunctions.cleanDate("September 17, 2012 at 10:09am PST-08")); + assertEquals("2012-09-17", GraphCleaningFunctions.cleanDate("September 17, 2012, 10:10:09")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("October 7, 1970")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("October 7th, 1970")); + assertEquals("2006-02-12", GraphCleaningFunctions.cleanDate("12 Feb 2006, 19:17")); + assertEquals("2006-02-12", GraphCleaningFunctions.cleanDate("12 Feb 2006 19:17")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("7 oct 70")); + assertEquals("1970-10-07", GraphCleaningFunctions.cleanDate("7 oct 1970")); + assertEquals("2013-02-03", GraphCleaningFunctions.cleanDate("03 February 2013")); + assertEquals("2013-07-01", GraphCleaningFunctions.cleanDate("1 July 2013")); + assertEquals("2013-02-03", GraphCleaningFunctions.cleanDate("2013-Feb-03")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("3/31/2014")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("03/31/2014")); + assertEquals("1971-08-21", GraphCleaningFunctions.cleanDate("08/21/71")); + assertEquals("1971-01-08", GraphCleaningFunctions.cleanDate("8/1/71")); + assertEquals("2014-08-04", GraphCleaningFunctions.cleanDate("4/8/2014 22:05")); + assertEquals("2014-08-04", GraphCleaningFunctions.cleanDate("04/08/2014 22:05")); + assertEquals("2014-08-04", GraphCleaningFunctions.cleanDate("4/8/14 22:05")); + assertEquals("2014-02-04", GraphCleaningFunctions.cleanDate("04/2/2014 03:00:51")); + assertEquals("1965-08-08", GraphCleaningFunctions.cleanDate("8/8/1965 12:00:00 AM")); + assertEquals("1965-08-08", GraphCleaningFunctions.cleanDate("8/8/1965 01:00:01 PM")); + assertEquals("1965-08-08", GraphCleaningFunctions.cleanDate("8/8/1965 01:00 PM")); + assertEquals("1965-08-08", GraphCleaningFunctions.cleanDate("8/8/1965 1:00 PM")); + assertEquals("1965-08-08", GraphCleaningFunctions.cleanDate("8/8/1965 12:00 AM")); + assertEquals("2014-02-04", GraphCleaningFunctions.cleanDate("4/02/2014 03:00:51")); + assertEquals("2012-03-19", GraphCleaningFunctions.cleanDate("03/19/2012 10:11:59")); + assertEquals("2012-03-19", GraphCleaningFunctions.cleanDate("03/19/2012 10:11:59.3186369")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("2014/3/31")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("2014/03/31")); + assertEquals("2014-04-08", GraphCleaningFunctions.cleanDate("2014/4/8 22:05")); + assertEquals("2014-04-08", GraphCleaningFunctions.cleanDate("2014/04/08 22:05")); + assertEquals("2014-04-02", GraphCleaningFunctions.cleanDate("2014/04/2 03:00:51")); + assertEquals("2014-04-02", GraphCleaningFunctions.cleanDate("2014/4/02 03:00:51")); + assertEquals("2012-03-19", GraphCleaningFunctions.cleanDate("2012/03/19 10:11:59")); + assertEquals("2012-03-19", GraphCleaningFunctions.cleanDate("2012/03/19 10:11:59.3186369")); + assertEquals("2014-04-08", GraphCleaningFunctions.cleanDate("2014年04月08日")); + assertEquals("2006-01-02", GraphCleaningFunctions.cleanDate("2006-01-02T15:04:05+0000")); + assertEquals("2009-08-13", GraphCleaningFunctions.cleanDate("2009-08-12T22:15:09-07:00")); + assertEquals("2009-08-12", GraphCleaningFunctions.cleanDate("2009-08-12T22:15:09")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 17:24:37.3186369")); + assertEquals("2012-08-03", GraphCleaningFunctions.cleanDate("2012-08-03 18:31:59.257000000")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 17:24:37.123")); + assertEquals("2013-04-01", GraphCleaningFunctions.cleanDate("2013-04-01 22:43")); + assertEquals("2013-04-01", GraphCleaningFunctions.cleanDate("2013-04-01 22:43:22")); + assertEquals("2014-12-16", GraphCleaningFunctions.cleanDate("2014-12-16 06:20:00 UTC")); + assertEquals("2014-12-16", GraphCleaningFunctions.cleanDate("2014-12-16 06:20:00 GMT")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 05:24:37 PM")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 13:13:43 +0800")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 13:13:43 +0800 +08")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26 13:13:44 +09:00")); + assertEquals("2012-08-03", GraphCleaningFunctions.cleanDate("2012-08-03 18:31:59.257000000 +0000 UTC")); + assertEquals("2015-09-30", GraphCleaningFunctions.cleanDate("2015-09-30 18:48:56.35272715 +0000 UTC")); + assertEquals("2015-02-18", GraphCleaningFunctions.cleanDate("2015-02-18 00:12:00 +0000 GMT")); + assertEquals("2015-02-18", GraphCleaningFunctions.cleanDate("2015-02-18 00:12:00 +0000 UTC")); assertEquals( - "2015-02-08", GraphCleaningFunctions.doCleanDate("2015-02-08 03:02:00 +0300 MSK m=+0.000000001").get()); + "2015-02-08", GraphCleaningFunctions.cleanDate("2015-02-08 03:02:00 +0300 MSK m=+0.000000001")); assertEquals( - "2015-02-08", GraphCleaningFunctions.doCleanDate("2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001").get()); - assertEquals("2017-07-19", GraphCleaningFunctions.doCleanDate("2017-07-19 03:21:51+00:00").get()); - assertEquals("2014-04-26", GraphCleaningFunctions.doCleanDate("2014-04-26").get()); - assertEquals("2014-04-01", GraphCleaningFunctions.doCleanDate("2014-04").get()); - assertEquals("2014-01-01", GraphCleaningFunctions.doCleanDate("2014").get()); - assertEquals("2014-05-11", GraphCleaningFunctions.doCleanDate("2014-05-11 08:20:13,787").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("3.31.2014").get()); - assertEquals("2014-03-31", GraphCleaningFunctions.doCleanDate("03.31.2014").get()); - assertEquals("1971-08-21", GraphCleaningFunctions.doCleanDate("08.21.71").get()); - assertEquals("2014-03-01", GraphCleaningFunctions.doCleanDate("2014.03").get()); - assertEquals("2014-03-30", GraphCleaningFunctions.doCleanDate("2014.03.30").get()); - assertEquals("2014-06-01", GraphCleaningFunctions.doCleanDate("20140601").get()); - assertEquals("2014-07-22", GraphCleaningFunctions.doCleanDate("20140722105203").get()); - assertEquals("2012-03-19", GraphCleaningFunctions.doCleanDate("1332151919").get()); - assertEquals("2013-11-12", GraphCleaningFunctions.doCleanDate("1384216367189").get()); - assertEquals("2013-11-12", GraphCleaningFunctions.doCleanDate("1384216367111222").get()); - assertEquals("2013-11-12", GraphCleaningFunctions.doCleanDate("1384216367111222333").get()); + "2015-02-08", GraphCleaningFunctions.cleanDate("2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001")); + assertEquals("2017-07-19", GraphCleaningFunctions.cleanDate("2017-07-19 03:21:51+00:00")); + assertEquals("2014-04-26", GraphCleaningFunctions.cleanDate("2014-04-26")); + assertEquals("2014-04-01", GraphCleaningFunctions.cleanDate("2014-04")); + assertEquals("2014-01-01", GraphCleaningFunctions.cleanDate("2014")); + assertEquals("2014-05-11", GraphCleaningFunctions.cleanDate("2014-05-11 08:20:13,787")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("3.31.2014")); + assertEquals("2014-03-31", GraphCleaningFunctions.cleanDate("03.31.2014")); + assertEquals("1971-08-21", GraphCleaningFunctions.cleanDate("08.21.71")); + assertEquals("2014-03-01", GraphCleaningFunctions.cleanDate("2014.03")); + assertEquals("2014-03-30", GraphCleaningFunctions.cleanDate("2014.03.30")); + assertEquals("2014-06-01", GraphCleaningFunctions.cleanDate("20140601")); + assertEquals("2014-07-22", GraphCleaningFunctions.cleanDate("20140722105203")); + assertEquals("2012-03-19", GraphCleaningFunctions.cleanDate("1332151919")); + assertEquals("2013-11-12", GraphCleaningFunctions.cleanDate("1384216367189")); + assertEquals("2013-11-12", GraphCleaningFunctions.cleanDate("1384216367111222")); + assertEquals("2013-11-12", GraphCleaningFunctions.cleanDate("1384216367111222333")); } diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index b1be7f10a..924d53593 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -27,15 +27,7 @@ import static eu.dnetlib.dhp.schema.common.ModelConstants.RESULT_PROJECT; import static eu.dnetlib.dhp.schema.common.ModelConstants.RESULT_RESULT; import static eu.dnetlib.dhp.schema.common.ModelConstants.SOFTWARE_DEFAULT_RESULTTYPE; import static eu.dnetlib.dhp.schema.common.ModelConstants.USER_CLAIM; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.asString; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.createOpenaireId; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.dataInfo; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.field; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.journal; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.listFields; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.listKeyValues; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.qualifier; -import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.structuredProperty; +import static eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils.*; import java.io.Closeable; import java.io.IOException; @@ -245,22 +237,20 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i ds .setOriginalId( Arrays - .asList((String[]) rs.getArray("identities").getArray()) + .asList((String[]) rs.getArray("originalid").getArray()) .stream() .filter(StringUtils::isNotBlank) .collect(Collectors.toList())); - ds - .setCollectedfrom( - listKeyValues( - createOpenaireId(10, rs.getString("collectedfromid"), true), - rs.getString("collectedfromname"))); - ds.setPid(new ArrayList<>()); + ds.setCollectedfrom(prepareCollectedfrom(rs.getArray("collectedfrom"))); + ds.setPid(prepareListOfStructProps(rs.getArray("pid"), info)); ds.setDateofcollection(asString(rs.getDate("dateofcollection"))); ds.setDateoftransformation(null); // Value not returned by the SQL query ds.setExtraInfo(new ArrayList<>()); // Values not present in the DB ds.setOaiprovenance(null); // Values not present in the DB ds.setDatasourcetype(prepareQualifierSplitting(rs.getString("datasourcetype"))); ds.setDatasourcetypeui(prepareQualifierSplitting(rs.getString("datasourcetypeui"))); + ds.setEosctype(prepareQualifierSplitting(rs.getString("eosctype"))); + ds.setEoscdatasourcetype(prepareQualifierSplitting(rs.getString("eoscdatasourcetype"))); ds.setOpenairecompatibility(prepareQualifierSplitting(rs.getString("openairecompatibility"))); ds.setOfficialname(field(rs.getString("officialname"), info)); ds.setEnglishname(field(rs.getString("englishname"), info)); @@ -277,6 +267,7 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i ds.setOdnumberofitemsdate(field(asString(rs.getDate("odnumberofitemsdate")), info)); ds.setOdpolicies(field(rs.getString("odpolicies"), info)); ds.setOdlanguages(prepareListFields(rs.getArray("odlanguages"), info)); + ds.setLanguages(listValues(rs.getArray("languages"))); ds.setOdcontenttypes(prepareListFields(rs.getArray("odcontenttypes"), info)); ds.setAccessinfopackage(prepareListFields(rs.getArray("accessinfopackage"), info)); ds.setReleasestartdate(field(asString(rs.getDate("releasestartdate")), info)); @@ -289,8 +280,9 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i ds.setDatabaseaccessrestriction(field(rs.getString("databaseaccessrestriction"), info)); ds.setDatauploadrestriction(field(rs.getString("datauploadrestriction"), info)); ds.setVersioning(field(rs.getBoolean("versioning"), info)); + ds.setVersioncontrol(rs.getBoolean("versioncontrol")); ds.setCitationguidelineurl(field(rs.getString("citationguidelineurl"), info)); - ds.setQualitymanagementkind(field(rs.getString("qualitymanagementkind"), info)); + ds.setPidsystems(field(rs.getString("pidsystems"), info)); ds.setCertificates(field(rs.getString("certificates"), info)); ds.setPolicies(new ArrayList<>()); // The sql query returns an empty array @@ -299,13 +291,20 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i journal( rs.getString("officialname"), rs.getString("issnPrinted"), rs.getString("issnOnline"), rs.getString("issnLinking"), info)); // Journal - ds.setDataInfo(info); - ds.setLastupdatetimestamp(lastUpdateTimestamp); + ds.setResearchentitytypes(listValues(rs.getArray("researchentitytypes"))); + ds.setProvidedproducttypes(listValues(rs.getArray("providedproducttypes"))); ds.setJurisdiction(prepareQualifierSplitting(rs.getString("jurisdiction"))); ds.setThematic(rs.getBoolean("thematic")); ds.setKnowledgegraph(rs.getBoolean("knowledgegraph")); ds.setContentpolicies(prepareListOfQualifiers(rs.getArray("contentpolicies"))); + ds.setSubmissionpolicyurl(rs.getString("submissionpolicyurl")); + ds.setPreservationpolicyurl(rs.getString("preservationpolicyurl")); + ds.setResearchproductaccesspolicies(listValues(rs.getArray("researchproductaccesspolicies"))); + ds + .setResearchproductmetadataaccesspolicies( + listValues(rs.getArray("researchproductmetadataaccesspolicies"))); + ds.setConsenttermsofuse(rs.getBoolean("consenttermsofuse")); ds.setFulltextdownload(rs.getBoolean("fulltextdownload")); ds @@ -313,8 +312,18 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i Optional .ofNullable( rs.getDate("consenttermsofusedate")) - .map(c -> c.toString()) + .map(java.sql.Date::toString) .orElse(null)); + ds + .setLastconsenttermsofusedate( + Optional + .ofNullable( + rs.getDate("lastconsenttermsofusedate")) + .map(java.sql.Date::toString) + .orElse(null)); + + ds.setDataInfo(info); + ds.setLastupdatetimestamp(lastUpdateTimestamp); return Arrays.asList(ds); } catch (final Exception e) { @@ -603,6 +612,32 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i String.format("%.3f", trust)); } + private List prepareCollectedfrom(Array values) throws SQLException { + if (Objects.isNull(values)) { + return null; + } + return Arrays + .stream((String[]) values.getArray()) + .filter(Objects::nonNull) + .distinct() + .map(s -> keyValueSplitting(s, "@@@")) + .collect(Collectors.toList()); + } + + public static KeyValue keyValueSplitting(final String s, String separator) { + if (StringUtils.isBlank(s)) { + return null; + } + final String[] arr = s.split(separator); + if (arr.length != 2) { + return null; + } + KeyValue kv = new KeyValue(); + kv.setKey(createOpenaireId(10, arr[0], true)); + kv.setValue(arr[1]); + return kv; + } + private Qualifier prepareQualifierSplitting(final String s) { if (StringUtils.isBlank(s)) { return null; diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index 603b1e9b2..3dbb46eaa 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -1,6 +1,7 @@ SELECT d.id AS datasourceid, - array_remove(d.id || array_agg(distinct di.pid) filter (where di.pid like 'piwik%') || array_agg(distinct dds.duplicate), NULL) AS identities, + array_remove(d.id || array_agg(distinct CASE WHEN dp.pid like 'piwik%' THEN di.pid ELSE NULL END) || array_agg(distinct dds.duplicate), NULL) AS originalid, + array_remove(array_agg(distinct CASE WHEN di.pid NOT LIKE 'piwik%' THEN di.pid||'###'||di.issuertype||'@@@'||'dnet:pid_types' ELSE NULL END), NULL) as pid, d.officialname AS officialname, d.englishname AS englishname, d.contactemail AS contactemail, @@ -9,8 +10,8 @@ SELECT THEN 'openaire-cris_1.1@@@dnet:datasourceCompatibilityLevel' WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility):: TEXT) @> ARRAY ['openaire4.0']) - THEN - 'openaire4.0@@@dnet:datasourceCompatibilityLevel' + THEN + 'openaire4.0@@@dnet:datasourceCompatibilityLevel' WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility):: TEXT) @> ARRAY ['driver', 'openaire2.0']) THEN 'driver-openaire2.0@@@dnet:datasourceCompatibilityLevel' @@ -40,29 +41,28 @@ SELECT END AS openairecompatibility, d.websiteurl AS websiteurl, d.logourl AS logourl, - array_agg(DISTINCT CASE WHEN a.protocol = 'oai' and last_aggregation_date is not null THEN a.baseurl ELSE NULL END) AS accessinfopackage, + array_remove(array_agg(DISTINCT CASE WHEN a.protocol = 'oai' and last_aggregation_date is not null THEN a.baseurl ELSE NULL END), NULL) AS accessinfopackage, d.latitude AS latitude, d.longitude AS longitude, d.namespaceprefix AS namespaceprefix, NULL AS odnumberofitems, NULL AS odnumberofitemsdate, - (SELECT array_agg(s|| '###keywords@@@dnet:subject_classification_typologies') FROM UNNEST( ARRAY( SELECT trim(s) - FROM unnest(string_to_array(d.subjects, '@@')) AS s)) AS s) AS subjects, + FROM unnest(string_to_array(d.subjects, '@@')) AS s)) AS s) AS subjects, d.description AS description, NULL AS odpolicies, - ARRAY(SELECT trim(s) - FROM unnest(string_to_array(d.languages, ',')) AS s) AS odlanguages, - ARRAY(SELECT trim(s) - FROM unnest(string_to_array(d.languages, ',')) AS s) AS languages, + array_remove(ARRAY(SELECT trim(s) + FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g') ',')) AS s), '{}') AS odlanguages, + array_remove(ARRAY(SELECT trim(s) + FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g') ',')) AS s), '{}') AS languages, -- Term provided only by OpenDOAR: -- probably updating the TR it could be replaced by research_entity_types[] -- But a study on the vocabulary terms is needed - -- REMOVED: ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s) AS odcontenttypes, + -- REMOVED: ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s) AS odcontenttypes, false AS inferred, false AS deletedbyinference, @@ -81,20 +81,24 @@ SELECT d.datauploadtype AS datauploadtype, d.databaseaccessrestriction AS databaseaccessrestriction, d.datauploadrestriction AS datauploadrestriction, - -- REPLACED BY version_control : d.versioning AS versioning, + -- REPLACED BY version_control : d.versioning AS versioning, d.version_control AS versioning, d.version_control AS versioncontrol, d.citationguidelineurl AS citationguidelineurl, - - d.pidsystems AS pidsystems, + array_to_string(array_agg(distinct dps.scheme), ' ') AS pidsystems, d.certificates AS certificates, ARRAY[]::text[] AS policies, - array_remove(dc.id||'@@@'||dc.officialname || array_agg(distinct dds_cf.id||'@@@'||dds_cf.officialname), NULL) AS collectedfrom, - + array_remove( + array( + select distinct cf + from unnest( + dc.id||'@@@'||dc.officialname || array_agg(distinct dds_cf.id||'@@@'||dds_cf.officialname) + ) as cf), + NULL) AS collectedfrom, d._typology_to_remove_||'@@@dnet:datasource_typologies' AS datasourcetype, + d._typology_to_remove_||'@@@dnet:datasource_typologies_ui' AS datasourcetypeui, d.eosc_type||'@@@dnet:eosc_types' AS eosctype, d.eosc_datasource_type||'@@@dnet:eosc_datasource_types' AS eoscdatasourcetype, - 'sysimport:crosswalk:entityregistry@@@dnet:provenance_actions' AS provenanceaction, d.issn AS issnPrinted, d.eissn AS issnOnline, d.lissn AS issnLinking, @@ -107,19 +111,20 @@ SELECT d.thematic AS thematic, -- REMOVED ???: d.knowledge_graph AS knowledgegraph, array(select unnest(d.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies, - d.submission_policy_url AS submissionpolicyurl, - d.preservation_policy_url AS preservationpolicyurl, - d.research_product_access_policies AS researchproductaccesspolicies, - d.research_product_metadata_access_policies AS researchproductmetadataaccesspolicies + nullif(trim(d.submission_policy_url), '') AS submissionpolicyurl, + nullif(trim(d.preservation_policy_url), '') AS preservationpolicyurl, + array_remove(d.research_product_access_policies, '') AS researchproductaccesspolicies, + array_remove(d.research_product_metadata_access_policies, '') AS researchproductmetadataaccesspolicies FROM dsm_services d LEFT OUTER JOIN dsm_services dc on (d.collectedfrom = dc.id) LEFT OUTER JOIN dsm_api a ON (d.id = a.service) -LEFT OUTER JOIN dsm_servicepids di ON (d.id = di.service) +LEFT OUTER JOIN dsm_servicepids dp ON (d.id = dp.service) +LEFT OUTER JOIN dsm_identities di ON (dp.pid = di.pid) LEFT OUTER JOIN dsm_dedup_services dds ON (d.id = dds.id) LEFT OUTER JOIN dsm_services dds_dup ON (dds.duplicate = dds_dup.id) LEFT OUTER JOIN dsm_services dds_cf ON (dds_dup.collectedfrom = dds_cf.id) - +LEFT OUTER JOIN dsm_pid_systems dps ON (d.id = dps.service) WHERE d.dedup_main_service = true @@ -150,7 +155,6 @@ GROUP BY d.version_control, d.citationguidelineurl, -- REMOVED: d.qualitymanagementkind, - d.pidsystems, d.certificates, dc.id, dc.officialname, diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java index 488a1f70b..390db0e4e 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java @@ -12,8 +12,11 @@ import java.sql.Array; import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -28,12 +31,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup; -import eu.dnetlib.dhp.schema.oaf.Datasource; -import eu.dnetlib.dhp.schema.oaf.Oaf; -import eu.dnetlib.dhp.schema.oaf.Organization; -import eu.dnetlib.dhp.schema.oaf.Project; -import eu.dnetlib.dhp.schema.oaf.Relation; -import eu.dnetlib.dhp.schema.oaf.Result; +import eu.dnetlib.dhp.schema.oaf.*; import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; @ExtendWith(MockitoExtension.class) @@ -64,7 +62,7 @@ public class MigrateDbEntitiesApplicationTest { @Test public void testProcessService() throws Exception { - final List fields = prepareMocks("datasources_resultset_entry.json"); + final List fields = prepareMocks("services_resultset_entry.json"); final List list = app.processService(rs); assertEquals(1, list.size()); @@ -72,13 +70,17 @@ public class MigrateDbEntitiesApplicationTest { final Datasource ds = (Datasource) list.get(0); assertValidId(ds.getId()); - assertValidId(ds.getCollectedfrom().get(0).getKey()); + ds + .getCollectedfrom() + .stream() + .map(KeyValue::getKey) + .forEach(dsId -> assertValidId(dsId)); assertEquals(getValueAsString("officialname", fields), ds.getOfficialname().getValue()); assertEquals(getValueAsString("englishname", fields), ds.getEnglishname().getValue()); - assertEquals(getValueAsString("contactemail", fields), ds.getContactemail().getValue()); assertEquals(getValueAsString("websiteurl", fields), ds.getWebsiteurl().getValue()); + assertEquals(getValueAsString("logourl", fields), ds.getLogourl()); + assertEquals(getValueAsString("contactemail", fields), ds.getContactemail().getValue()); assertEquals(getValueAsString("namespaceprefix", fields), ds.getNamespaceprefix().getValue()); - assertEquals(getValueAsString("collectedfromname", fields), ds.getCollectedfrom().get(0).getValue()); assertEquals(getValueAsString("officialname", fields), ds.getJournal().getName()); assertEquals(getValueAsString("issnPrinted", fields), ds.getJournal().getIssnPrinted()); assertEquals(getValueAsString("issnOnline", fields), ds.getJournal().getIssnOnline()); @@ -90,19 +92,103 @@ public class MigrateDbEntitiesApplicationTest { assertEquals("pubsrepository::journal", ds.getDatasourcetypeui().getClassid()); assertEquals("dnet:datasource_typologies_ui", ds.getDatasourcetypeui().getSchemeid()); + assertEquals("Data Source", ds.getEosctype().getClassid()); + assertEquals("Data Source", ds.getEosctype().getClassname()); + assertEquals("dnet:eosc_types", ds.getEosctype().getSchemeid()); + assertEquals("dnet:eosc_types", ds.getEosctype().getSchemename()); + + assertEquals("Journal archive", ds.getEoscdatasourcetype().getClassid()); + assertEquals("Journal archive", ds.getEoscdatasourcetype().getClassname()); + assertEquals("dnet:eosc_datasource_types", ds.getEoscdatasourcetype().getSchemeid()); + assertEquals("dnet:eosc_datasource_types", ds.getEoscdatasourcetype().getSchemename()); + + assertEquals("openaire4.0", ds.getOpenairecompatibility().getClassid()); + assertEquals("openaire4.0", ds.getOpenairecompatibility().getClassname()); + assertEquals("dnet:datasourceCompatibilityLevel", ds.getOpenairecompatibility().getSchemeid()); + assertEquals("dnet:datasourceCompatibilityLevel", ds.getOpenairecompatibility().getSchemename()); + + assertEquals(getValueAsDouble("latitude", fields).toString(), ds.getLatitude().getValue()); + assertEquals(getValueAsDouble("longitude", fields).toString(), ds.getLongitude().getValue()); + assertEquals(getValueAsString("dateofvalidation", fields), ds.getDateofvalidation()); + + assertEquals(getValueAsString("description", fields), ds.getDescription().getValue()); + + // TODO assertEquals(getValueAsString("subjects", fields), ds.getSubjects()); + + assertEquals("0.0", ds.getOdnumberofitems().getValue()); + assertEquals(getValueAsString("odnumberofitemsdate", fields), ds.getOdnumberofitemsdate()); + assertEquals(getValueAsString("odpolicies", fields), ds.getOdpolicies()); + + assertEquals( + getValueAsList("odlanguages", fields), + ds.getOdlanguages().stream().map(Field::getValue).collect(Collectors.toList())); + assertEquals(getValueAsList("languages", fields), ds.getLanguages()); + assertEquals( + getValueAsList("odcontenttypes", fields), + ds.getOdcontenttypes().stream().map(Field::getValue).collect(Collectors.toList())); + assertEquals( + getValueAsList("accessinfopackage", fields), + ds.getAccessinfopackage().stream().map(Field::getValue).collect(Collectors.toList())); + assertEquals(getValueAsString("releasestartdate", fields), ds.getReleasestartdate()); + assertEquals(getValueAsString("releaseenddate", fields), ds.getReleasestartdate()); + assertEquals(getValueAsString("missionstatementurl", fields), ds.getMissionstatementurl()); + + assertEquals(false, ds.getDataprovider().getValue()); + assertEquals(false, ds.getServiceprovider().getValue()); + + assertEquals(getValueAsString("databaseaccesstype", fields), ds.getDatabaseaccesstype()); + assertEquals(getValueAsString("datauploadtype", fields), ds.getDatauploadtype()); + assertEquals(getValueAsString("databaseaccessrestriction", fields), ds.getDatabaseaccessrestriction()); + assertEquals(getValueAsString("datauploadrestriction", fields), ds.getDatauploadrestriction()); + + assertEquals(false, ds.getVersioning().getValue()); + assertEquals(false, ds.getVersioncontrol()); + + assertEquals(getValueAsString("citationguidelineurl", fields), ds.getCitationguidelineurl()); + assertEquals(getValueAsString("pidsystems", fields), ds.getPidsystems()); + assertEquals(getValueAsString("certificates", fields), ds.getCertificates()); + + assertEquals(getValueAsList("researchentitytypes", fields), ds.getResearchentitytypes()); + assertEquals(getValueAsList("providedproducttypes", fields), ds.getProvidedproducttypes()); + assertEquals("National", ds.getJurisdiction().getClassid()); assertEquals("eosc:jurisdictions", ds.getJurisdiction().getSchemeid()); assertTrue(ds.getThematic()); assertTrue(ds.getKnowledgegraph()); - assertEquals(1, ds.getContentpolicies().size()); - assertEquals("Journal article", ds.getContentpolicies().get(0).getClassid()); - assertEquals("eosc:contentpolicies", ds.getContentpolicies().get(0).getSchemeid()); + HashSet cpSchemeId = ds + .getContentpolicies() + .stream() + .map(Qualifier::getSchemeid) + .collect(Collectors.toCollection(HashSet::new)); + assertTrue(cpSchemeId.size() == 1); + assertTrue(cpSchemeId.contains("eosc:contentpolicies")); + HashSet cpSchemeName = ds + .getContentpolicies() + .stream() + .map(Qualifier::getSchemename) + .collect(Collectors.toCollection(HashSet::new)); + assertTrue(cpSchemeName.size() == 1); + assertTrue(cpSchemeName.contains("eosc:contentpolicies")); + assertEquals(2, ds.getContentpolicies().size()); + assertEquals("Taxonomic classification", ds.getContentpolicies().get(0).getClassid()); + assertEquals("Resource collection", ds.getContentpolicies().get(1).getClassid()); + + assertEquals(getValueAsString("submissionpolicyurl", fields), ds.getSubmissionpolicyurl()); + assertEquals(getValueAsString("preservationpolicyurl", fields), ds.getPreservationpolicyurl()); + + assertEquals( + getValueAsList("researchproductaccesspolicies", fields), + ds.getResearchproductaccesspolicies()); + assertEquals( + getValueAsList("researchproductmetadataaccesspolicies", fields), + ds.getResearchproductmetadataaccesspolicies()); assertEquals(true, ds.getConsenttermsofuse()); assertEquals(true, ds.getFulltextdownload()); assertEquals("2022-03-11", ds.getConsenttermsofusedate()); + assertEquals("2022-03-11", ds.getLastconsenttermsofusedate()); } @Test @@ -356,18 +442,31 @@ public class MigrateDbEntitiesApplicationTest { } private Float getValueAsFloat(final String name, final List fields) { - return new Float(getValueAs(name, fields).toString()); + final Object value = getValueAs(name, fields); + return value != null ? new Float(value.toString()) : null; + } + + private Double getValueAsDouble(final String name, final List fields) { + final Object value = getValueAs(name, fields); + return value != null ? new Double(value.toString()) : null; + } + + private Integer getValueAsInt(final String name, final List fields) { + final Object value = getValueAs(name, fields); + return value != null ? new Integer(value.toString()) : null; } private T getValueAs(final String name, final List fields) { - return fields + final Optional field = fields .stream() .filter(f -> f.getField().equals(name)) - .map(TypedField::getValue) - .filter(Objects::nonNull) - .map(o -> (T) o) .findFirst() - .get(); + .map(TypedField::getValue) + .map(o -> (T) o); + if (!field.isPresent()) { + return null; + } + return field.get(); } private List getValueAsList(final String name, final List fields) { diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasources_resultset_entry.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json similarity index 68% rename from dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasources_resultset_entry.json rename to dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json index 11b884cde..70fad3323 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/datasources_resultset_entry.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json @@ -5,14 +5,47 @@ "value": "274269ac6f3b::2579-5449" }, { - "field": "identities", + "field": "originalid", "type": "array", "value": [ - "274269ac6f3b::2579-5449", + "fairsharing_::1562", "piwik:13", - null + null, + "re3data_____::r3d100010213" ] }, + { + "field": "pid", + "type": "array", + "value": [ + "r3d100010218###re3data@@@dnet:pid_types" + ] + }, + { + "field": "datasourcetype", + "type": "string", + "value": "pubsrepository::journal@@@dnet:datasource_typologies" + }, + { + "field": "datasourcetypeui", + "type": "string", + "value": "pubsrepository::journal@@@dnet:datasource_typologies_ui" + }, + { + "field": "eosctype", + "type": "string", + "value": "Data Source@@@dnet:eosc_types" + }, + { + "field": "eoscdatasourcetype", + "type": "string", + "value": "Journal archive@@@dnet:eosc_datasource_types" + }, + { + "field": "openairecompatibility", + "type": "string", + "value": "openaire4.0@@@dnet:datasourceCompatibilityLevel" + }, { "field": "officialname", "type": "string", @@ -23,16 +56,6 @@ "type": "string", "value": "Jurnal Ilmiah Pendidikan Scholastic" }, - { - "field": "contactemail", - "type": "string", - "value": "test@test.it" - }, - { - "field": "openairecompatibility", - "type": "string", - "value": "hostedBy@@@dnet:datasourceCompatibilityLevel" - }, { "field": "websiteurl", "type": "string", @@ -44,11 +67,14 @@ "value": null }, { - "field": "accessinfopackage", - "type": "array", - "value": [ - null - ] + "field": "contactemail", + "type": "string", + "value": "test@test.it" + }, + { + "field": "namespaceprefix", + "type": "string", + "value": "ojs_25795449" }, { "field": "latitude", @@ -61,9 +87,19 @@ "value": 0 }, { - "field": "namespaceprefix", + "field": "dateofvalidation", + "type": "date", + "value": null + }, + { + "field": "description", "type": "string", - "value": "ojs_25795449" + "value": "veterinary medicine" + }, + { + "field": "subjects", + "type": "array", + "value": [] }, { "field": "odnumberofitems", @@ -75,16 +111,6 @@ "type": "date", "value": null }, - { - "field": "subjects", - "type": "array", - "value": null - }, - { - "field": "description", - "type": "string", - "value": null - }, { "field": "odpolicies", "type": "string", @@ -93,7 +119,26 @@ { "field": "odlanguages", "type": "array", - "value": [] + "value": [ + "English", + "German", + "French", + "Danish", + "Norwegian", + "Swedish" + ] + }, + { + "field": "languages", + "type": "array", + "value": [ + "English", + "German", + "French", + "Danish", + "Norwegian", + "Swedish" + ] }, { "field": "odcontenttypes", @@ -103,34 +148,11 @@ ] }, { - "field": "inferred", - "type": "boolean", - "value": false - }, - { - "field": "deletedbyinference", - "type": "boolean", - "value": false - }, - { - "field": "trust", - "type": "double", - "value": 0.9 - }, - { - "field": "inferenceprovenance", - "type": "string", - "value": null - }, - { - "field": "dateofcollection", - "type": "date", - "value": "2020-01-21" - }, - { - "field": "dateofvalidation", - "type": "date", - "value": null + "field": "accessinfopackage", + "type": "array", + "value": [ + "http://www.revista.vocesdelaeducacion.com.mx/index.php/index/oai" + ] }, { "field": "releasestartdate", @@ -183,12 +205,12 @@ "value": null }, { - "field": "citationguidelineurl", - "type": "string", + "field": "versioncontrol", + "type": "boolean", "value": null }, { - "field": "qualitymanagementkind", + "field": "citationguidelineurl", "type": "string", "value": null }, @@ -208,29 +230,38 @@ "value": [] }, { - "field": "collectedfromid", - "type": "string", - "value": "openaire____::SnVybmFsIEZha3VsdGFzIFNhc3RyYSBVbml2ZXJzaXRhcyBFa2FzYWt0aQ==" + "field": "inferred", + "type": "boolean", + "value": false }, { - "field": "collectedfromname", - "type": "string", - "value": "Jurnal Fakultas Sastra Universitas Ekasakti" + "field": "deletedbyinference", + "type": "boolean", + "value": false }, { - "field": "datasourcetype", - "type": "string", - "value": "pubsrepository::journal@@@dnet:datasource_typologies" + "field": "trust", + "type": "double", + "value": 0.9 }, { - "field": "datasourcetypeui", + "field": "inferenceprovenance", "type": "string", - "value": "pubsrepository::journal@@@dnet:datasource_typologies_ui" + "value": null }, { - "field": "provenanceaction", - "type": "not_used", - "value": "sysimport:crosswalk:entityregistry@@@dnet:provenance_actions" + "field": "dateofcollection", + "type": "date", + "value": "2020-01-21" + }, + { + "field": "collectedfrom", + "type": "array", + "value": [ + "openaire____::fairsharing@@@FAIRsharing.org", + "openaire____::opendoar@@@OpenDOAR", + "openaire____::re3data@@@Registry of Research Data Repository" + ] }, { "field": "issnPrinted", @@ -247,6 +278,20 @@ "type": "string", "value": "2579-5447" }, + { + "field": "researchentitytypes", + "type": "array", + "value": [ + "Research Data" + ] + }, + { + "field": "providedproducttypes", + "type": "array", + "value": [ + + ] + }, { "field": "jurisdiction", "type": "string", @@ -266,7 +311,32 @@ "field": "contentpolicies", "type": "array", "value": [ - "Journal article@@@eosc:contentpolicies" + "Taxonomic classification@@@eosc:contentpolicies", + "Resource collection@@@eosc:contentpolicies" + ] + }, + { + "field": "submissionpolicyurl", + "type": "string", + "value": null + }, + { + "field": "preservationpolicyurl", + "type": "string", + "value": "Permanent Archiving https://datadryad.org/stash/faq" + }, + { + "field": "researchproductaccesspolicies", + "type": "array", + "value": [ + "https://100percentit.com/legal/" + ] + }, + { + "field": "researchproductmetadataaccesspolicies", + "type": "array", + "value": [ + "https://wenmr.science.uu.nl/conditions" ] }, { @@ -283,5 +353,10 @@ "field": "consenttermsofusedate", "type": "date", "value": "2022-03-11" + }, + { + "field": "lastconsenttermsofusedate", + "type": "date", + "value": "2022-03-11" } ] diff --git a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java index 5d4a831c0..0daf1c085 100644 --- a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java +++ b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java @@ -695,12 +695,6 @@ public class XmlRecordFactory implements Serializable { XmlSerializationUtils .asXmlElement("citationguidelineurl", ds.getCitationguidelineurl().getValue())); } - if (ds.getQualitymanagementkind() != null) { - metadata - .add( - XmlSerializationUtils - .asXmlElement("qualitymanagementkind", ds.getQualitymanagementkind().getValue())); - } if (ds.getPidsystems() != null) { metadata .add(XmlSerializationUtils.asXmlElement("pidsystems", ds.getPidsystems().getValue())); diff --git a/pom.xml b/pom.xml index 136b9b867..03a4496d7 100644 --- a/pom.xml +++ b/pom.xml @@ -801,7 +801,7 @@ 3.3.3 3.4.2 [2.12,3.0) - [2.10.32] + [2.11.34-eosc-SNAPSHOT] [4.0.3] [6.0.5] [3.1.6] From 05c1ea92e967185012087f3829aa11bb4a340d1e Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 29 Apr 2022 15:56:55 +0200 Subject: [PATCH 39/83] EOSC Services - added Service-specific fields in the XML record serialization --- .../raw/MigrateDbEntitiesApplicationTest.java | 6 + .../oa/provision/utils/XmlRecordFactory.java | 78 +++- .../oa/provision/XmlRecordFactoryTest.java | 11 +- .../dnetlib/dhp/oa/provision/datasource.json | 408 +++++++++++++++++- 4 files changed, 495 insertions(+), 8 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java index 390db0e4e..69552c4dc 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java @@ -75,6 +75,12 @@ public class MigrateDbEntitiesApplicationTest { .stream() .map(KeyValue::getKey) .forEach(dsId -> assertValidId(dsId)); + + assertEquals(1, ds.getPid().size()); + assertEquals("r3d100010218", ds.getPid().get(0).getValue()); + assertEquals("re3data", ds.getPid().get(0).getQualifier().getClassid()); + assertEquals("dnet:pid_types", ds.getPid().get(0).getQualifier().getSchemeid()); + assertEquals(getValueAsString("officialname", fields), ds.getOfficialname().getValue()); assertEquals(getValueAsString("englishname", fields), ds.getEnglishname().getValue()); assertEquals(getValueAsString("websiteurl", fields), ds.getWebsiteurl().getValue()); diff --git a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java index 0daf1c085..b811a7a0f 100644 --- a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java +++ b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java @@ -535,6 +535,12 @@ public class XmlRecordFactory implements Serializable { if (ds.getDatasourcetypeui() != null) { metadata.add(XmlSerializationUtils.mapQualifier("datasourcetypeui", ds.getDatasourcetypeui())); } + if (ds.getEosctype() != null) { + metadata.add(XmlSerializationUtils.mapQualifier("eosctype", ds.getEosctype())); + } + if (ds.getEoscdatasourcetype() != null) { + metadata.add(XmlSerializationUtils.mapQualifier("eoscdatasourcetype", ds.getEoscdatasourcetype())); + } if (ds.getOpenairecompatibility() != null) { metadata .add( @@ -583,6 +589,16 @@ public class XmlRecordFactory implements Serializable { metadata .add(XmlSerializationUtils.asXmlElement("description", ds.getDescription().getValue())); } + if (ds.getSubjects() != null) { + metadata + .addAll( + ds + .getSubjects() + .stream() + .filter(Objects::nonNull) + .map(sp -> XmlSerializationUtils.mapStructuredProperty("subjects", sp)) + .collect(Collectors.toList())); + } if (ds.getOdnumberofitems() != null) { metadata .add( @@ -609,6 +625,16 @@ public class XmlRecordFactory implements Serializable { .map(c -> XmlSerializationUtils.asXmlElement("odlanguages", c.getValue())) .collect(Collectors.toList())); } + if (ds.getLanguages() != null) { + metadata + .addAll( + ds + .getLanguages() + .stream() + .filter(Objects::nonNull) + .map(c -> XmlSerializationUtils.asXmlElement("languages", c)) + .collect(Collectors.toList())); + } if (ds.getOdcontenttypes() != null) { metadata .addAll( @@ -689,6 +715,12 @@ public class XmlRecordFactory implements Serializable { XmlSerializationUtils .asXmlElement("versioning", ds.getVersioning().getValue().toString())); } + if (ds.getVersioncontrol() != null) { + metadata + .add( + XmlSerializationUtils + .asXmlElement("versioncontrol", ds.getVersioncontrol().toString())); + } if (ds.getCitationguidelineurl() != null) { metadata .add( @@ -716,17 +748,24 @@ public class XmlRecordFactory implements Serializable { if (ds.getJournal() != null) { metadata.add(XmlSerializationUtils.mapJournal(ds.getJournal())); } - if (ds.getSubjects() != null) { + if (ds.getResearchentitytypes() != null) { metadata .addAll( ds - .getSubjects() + .getResearchentitytypes() .stream() - .filter(Objects::nonNull) - .map(sp -> XmlSerializationUtils.mapStructuredProperty("subjects", sp)) + .map(c -> XmlSerializationUtils.asXmlElement("researchentitytypes", c)) + .collect(Collectors.toList())); + } + if (ds.getProvidedproducttypes() != null) { + metadata + .addAll( + ds + .getProvidedproducttypes() + .stream() + .map(c -> XmlSerializationUtils.asXmlElement("providedproducttypes", c)) .collect(Collectors.toList())); } - if (ds.getJurisdiction() != null) { metadata.add(XmlSerializationUtils.mapQualifier("jurisdiction", ds.getJurisdiction())); } @@ -750,7 +789,34 @@ public class XmlRecordFactory implements Serializable { .map(q -> XmlSerializationUtils.mapQualifier("contentpolicy", q)) .collect(Collectors.toList())); } - + if (ds.getSubmissionpolicyurl() != null) { + metadata + .add(XmlSerializationUtils.asXmlElement("submissionpolicyurl", ds.getSubmissionpolicyurl())); + } + if (ds.getPreservationpolicyurl() != null) { + metadata + .add( + XmlSerializationUtils.asXmlElement("preservationpolicyurl", ds.getPreservationpolicyurl())); + } + if (ds.getResearchproductaccesspolicies() != null) { + metadata + .addAll( + ds + .getResearchproductaccesspolicies() + .stream() + .map(c -> XmlSerializationUtils.asXmlElement("researchproductaccesspolicies", c)) + .collect(Collectors.toList())); + } + if (ds.getResearchproductmetadataaccesspolicies() != null) { + metadata + .addAll( + ds + .getResearchproductmetadataaccesspolicies() + .stream() + .map( + c -> XmlSerializationUtils.asXmlElement("researchproductmetadataaccesspolicies", c)) + .collect(Collectors.toList())); + } break; case organization: final Organization o = (Organization) entity; diff --git a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java index c32d868e8..f4763618b 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java +++ b/dhp-workflows/dhp-graph-provision/src/test/java/eu/dnetlib/dhp/oa/provision/XmlRecordFactoryTest.java @@ -11,6 +11,7 @@ import java.util.List; import org.apache.commons.io.IOUtils; import org.dom4j.Document; import org.dom4j.DocumentException; +import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.jupiter.api.Test; @@ -142,7 +143,7 @@ public class XmlRecordFactoryTest { } @Test - public void testDatasource() throws IOException, DocumentException { + public void testService() throws IOException, DocumentException { final ContextMapper contextMapper = new ContextMapper(); final XmlRecordFactory xmlRecordFactory = new XmlRecordFactory(contextMapper, false, @@ -167,6 +168,14 @@ public class XmlRecordFactoryTest { assertEquals("true", doc.valueOf("//thematic")); assertEquals("Journal article", doc.valueOf("//contentpolicy/@classname")); assertEquals("Journal archive", doc.valueOf("//datasourcetypeui/@classname")); + assertEquals("Data Source", doc.valueOf("//eosctype/@classname")); + final List pids = doc.selectNodes("//pid"); + assertEquals(1, pids.size()); + assertEquals("re3data", ((Element) pids.get(0)).attribute("classid").getValue()); + assertEquals( + "Registry of research data repositories", ((Element) pids.get(0)).attribute("classname").getValue()); + assertEquals("dnet:pid_types", ((Element) pids.get(0)).attribute("schemeid").getValue()); + assertEquals("dnet:pid_types", ((Element) pids.get(0)).attribute("schemename").getValue()); } } diff --git a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json index ae069b8b5..8a23b4e6a 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json +++ b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json @@ -1 +1,407 @@ -{"collectedfrom":[{"key":"10|openaire____::13068d7823ea0bd86516ac2cb66e96ba","value":"Jurnal Fakultas Sastra Universitas Ekasakti","dataInfo":null}],"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1645012035118,"id":"10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7","originalId":["274269ac6f3b::2579-5449","piwik:13"],"pid":[],"dateofcollection":"2020-01-21","dateoftransformation":null,"extraInfo":[],"oaiprovenance":null,"datasourcetype":{"classid":"pubsrepository::journal","classname":"pubsrepository::journal","schemeid":"dnet:datasource_typologies","schemename":"dnet:datasource_typologies"},"datasourcetypeui":{"classid":"pubsrepository::journal","classname":"Journal archive","schemeid":"dnet:datasource_typologies_ui","schemename":"dnet:datasource_typologies_ui"},"openairecompatibility":{"classid":"hostedBy","classname":"hostedBy","schemeid":"dnet:datasourceCompatibilityLevel","schemename":"dnet:datasourceCompatibilityLevel"},"officialname":{"value":"Jurnal Ilmiah Pendidikan Scholastic","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"englishname":{"value":"Jurnal Ilmiah Pendidikan Scholastic","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"websiteurl":{"value":"http://e-journal.sastra-unes.com/index.php/JIPS/index","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"logourl":null,"contactemail":{"value":"test@test.it","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"namespaceprefix":{"value":"ojs_25795449","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"latitude":{"value":"0.0","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"longitude":{"value":"0.0","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"dateofvalidation":null,"description":null,"subjects":[],"odnumberofitems":{"value":"0.0","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"odnumberofitemsdate":null,"odpolicies":null,"odlanguages":[],"odcontenttypes":[{"value":"Journal articles","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"accessinfopackage":[],"releasestartdate":null,"releaseenddate":null,"missionstatementurl":null,"dataprovider":{"value":false,"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"serviceprovider":{"value":false,"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"databaseaccesstype":null,"datauploadtype":null,"databaseaccessrestriction":null,"datauploadrestriction":null,"versioning":{"value":false,"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"citationguidelineurl":null,"qualitymanagementkind":null,"pidsystems":null,"certificates":null,"policies":[],"journal":{"name":"Jurnal Ilmiah Pendidikan Scholastic","issnPrinted":"2579-5449","issnOnline":"2579-5448","issnLinking":"2579-5447","ep":null,"iss":null,"sp":null,"vol":null,"edition":null,"conferenceplace":null,"conferencedate":null,"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.900","inferenceprovenance":null,"provenanceaction":{"classid":"sysimport:crosswalk:entityregistry","classname":"sysimport:crosswalk:entityregistry","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"providedentitytypes":null,"providedproducttypes":null,"jurisdiction":{"classid":"National","classname":"National","schemeid":"eosc:jurisdictions","schemename":"eosc:jurisdictions"},"thematic":true,"knowledgegraph":true,"contentpolicies":[{"classid":"Journal article","classname":"Journal article","schemeid":"eosc:contentpolicies","schemename":"eosc:contentpolicies"}]} +{ + "collectedfrom": [ + { + "key": "10|openaire____::13068d7823ea0bd86516ac2cb66e96ba", + "value": "Jurnal Fakultas Sastra Universitas Ekasakti", + "dataInfo": null + } + ], + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + }, + "lastupdatetimestamp": 1645012035118, + "id": "10|274269ac6f3b::2a2e2793b500f3f7b47ef24b1a9277b7", + "originalId": [ + "274269ac6f3b::2579-5449", + "piwik:13" + ], + "dateofcollection": "2020-01-21", + "dateoftransformation": null, + "extraInfo": [], + "oaiprovenance": null, + "datasourcetype": { + "classid": "pubsrepository::journal", + "classname": "Journal", + "schemeid": "dnet:datasource_typologies", + "schemename": "dnet:datasource_typologies" + }, + "datasourcetypeui": { + "classid": "pubsrepository::journal", + "classname": "Journal archive", + "schemeid": "dnet:datasource_typologies_ui", + "schemename": "dnet:datasource_typologies_ui" + }, + "pid": [ + { + "value": "r3d100010218", + "qualifier": { + "classid": "re3data", + "classname": "Registry of research data repositories", + "schemeid": "dnet:pid_types", + "schemename": "dnet:pid_types" + } + } + ], + "eosctype": { + "classid": "Data Source", + "classname": "Data Source", + "schemeid": "dnet:eosc_types", + "schemename": "dnet:eosc_types" + }, + "eoscdatasourcetype": { + "classid": "Journal archive", + "classname": "Journal archive", + "schemeid": "dnet:eosc_datasource_types", + "schemename": "dnet:eosc_datasource_types" + }, + "openairecompatibility": { + "classid": "hostedBy", + "classname": "hostedBy", + "schemeid": "dnet:datasourceCompatibilityLevel", + "schemename": "dnet:datasourceCompatibilityLevel" + }, + "officialname": { + "value": "Jurnal Ilmiah Pendidikan Scholastic", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "englishname": { + "value": "Jurnal Ilmiah Pendidikan Scholastic", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "websiteurl": { + "value": "http://e-journal.sastra-unes.com/index.php/JIPS/index", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "logourl": null, + "contactemail": { + "value": "test@test.it", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "namespaceprefix": { + "value": "ojs_25795449", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "latitude": { + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "longitude": { + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "dateofvalidation": null, + "description": { + "value": "veterinary medicine", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "subjects": [], + "odnumberofitems": { + "value": "0.0", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "odnumberofitemsdate": null, + "odpolicies": null, + "odlanguages": [ + { + "value": "English", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + { + "value": "German", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + } + ], + "languages" : [ "English", "German" ], + "odcontenttypes": [ + { + "value": "Journal articles", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + } + ], + "accessinfopackage": [ + { + "value": "http://www.revista.vocesdelaeducacion.com.mx/index.php/index/oai", + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + } + ], + "releasestartdate": null, + "releaseenddate": null, + "missionstatementurl": null, + "dataprovider": { + "value": false, + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "serviceprovider": { + "value": false, + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "databaseaccesstype": null, + "datauploadtype": null, + "databaseaccessrestriction": null, + "datauploadrestriction": null, + "versioning": { + "value": false, + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "versioncontrol": false, + "citationguidelineurl": null, + "qualitymanagementkind": null, + "pidsystems": null, + "certificates": null, + "policies": [], + "journal": { + "name": "Jurnal Ilmiah Pendidikan Scholastic", + "issnPrinted": "2579-5449", + "issnOnline": "2579-5448", + "issnLinking": "2579-5447", + "ep": null, + "iss": null, + "sp": null, + "vol": null, + "edition": null, + "conferenceplace": null, + "conferencedate": null, + "dataInfo": { + "invisible": false, + "inferred": false, + "deletedbyinference": false, + "trust": "0.900", + "inferenceprovenance": null, + "provenanceaction": { + "classid": "sysimport:crosswalk:entityregistry", + "classname": "sysimport:crosswalk:entityregistry", + "schemeid": "dnet:provenanceActions", + "schemename": "dnet:provenanceActions" + } + } + }, + "researchentitytypes":[ "Research Data" ], + "providedentitytypes": null, + "providedproducttypes": null, + "jurisdiction": { + "classid": "National", + "classname": "National", + "schemeid": "eosc:jurisdictions", + "schemename": "eosc:jurisdictions" + }, + "thematic": true, + "knowledgegraph": true, + "contentpolicies": [ + { + "classid": "Journal article", + "classname": "Journal article", + "schemeid": "eosc:contentpolicies", + "schemename": "eosc:contentpolicies" + } + ], + "submissionpolicyurl": null, + "preservationpolicyurl" : "Permanent Archiving https://datadryad.org/stash/faq", + "researchproductaccesspolicies": [ + "https://100percentit.com/legal/" + ], + "researchproductmetadataaccesspolicies": [ + "https://wenmr.science.uu.nl/conditions" + ] +} From a8c51f6f1627b357679a6f0a3efc396b2a82f2e0 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 2 May 2022 11:09:03 +0200 Subject: [PATCH 40/83] EOSC Services - fixed query and testing preparation --- .../eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml | 1 + .../resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml index 29d4269ef..52462adb4 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml @@ -102,6 +102,7 @@ --postgresUser${postgresUser} --postgresPassword${postgresPassword} --isLookupUrl${isLookupUrl} + --actionopenaire --dbschema${dbSchema} --nsPrefixBlacklist${nsPrefixBlacklist} diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index 3dbb46eaa..f83e077a3 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -56,10 +56,10 @@ SELECT d.description AS description, NULL AS odpolicies, array_remove(ARRAY(SELECT trim(s) - FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g') ',')) AS s), '{}') AS odlanguages, + FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g'), ',')) AS s), '{}') AS odlanguages, array_remove(ARRAY(SELECT trim(s) - FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g') ',')) AS s), '{}') AS languages, - -- Term provided only by OpenDOAR: + FROM unnest(string_to_array(regexp_replace(d.languages, '{|}|"', '', 'g'), ',')) AS s), '{}') AS languages, + -- Term provided only by OpenDOAR: -- probably updating the TR it could be replaced by research_entity_types[] -- But a study on the vocabulary terms is needed -- REMOVED: ARRAY(SELECT trim(s) FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s) AS odcontenttypes, From b6a7ff3a99e0688f64e24e5f69c887245cece7bb Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 2 May 2022 15:52:33 +0200 Subject: [PATCH 41/83] EOSC Services - removed fields from mapping, testing preparation --- .../raw/MigrateDbEntitiesApplication.java | 13 ++-- .../oa/graph/raw_db/oozie_app/workflow.xml | 64 ++++++++++++++++++- .../dhp/oa/graph/sql/queryServices.sql | 1 - .../raw/MigrateDbEntitiesApplicationTest.java | 7 +- .../graph/raw/services_resultset_entry.json | 17 ----- .../dnetlib/dhp/oa/provision/datasource.json | 19 ------ 6 files changed, 68 insertions(+), 53 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index 924d53593..c40f9b392 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -148,10 +148,10 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i log.info("Processing Organizations..."); smdbe.execute("queryOrganizations.sql", smdbe::processOrganization, verifyNamespacePrefix); - log.info("Processing relationsNoRemoval ds <-> orgs ..."); + log.info("Processing relations services <-> orgs ..."); smdbe .execute( - "queryDatasourceOrganization.sql", smdbe::processDatasourceOrganization, + "queryServiceOrganization.sql", smdbe::processServiceOrganization, verifyNamespacePrefix); log.info("Processing projects <-> orgs ..."); @@ -268,13 +268,10 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i ds.setOdpolicies(field(rs.getString("odpolicies"), info)); ds.setOdlanguages(prepareListFields(rs.getArray("odlanguages"), info)); ds.setLanguages(listValues(rs.getArray("languages"))); - ds.setOdcontenttypes(prepareListFields(rs.getArray("odcontenttypes"), info)); ds.setAccessinfopackage(prepareListFields(rs.getArray("accessinfopackage"), info)); ds.setReleasestartdate(field(asString(rs.getDate("releasestartdate")), info)); ds.setReleaseenddate(field(asString(rs.getDate("releaseenddate")), info)); ds.setMissionstatementurl(field(rs.getString("missionstatementurl"), info)); - ds.setDataprovider(field(rs.getBoolean("dataprovider"), info)); - ds.setServiceprovider(field(rs.getBoolean("serviceprovider"), info)); ds.setDatabaseaccesstype(field(rs.getString("databaseaccesstype"), info)); ds.setDatauploadtype(field(rs.getString("datauploadtype"), info)); ds.setDatabaseaccessrestriction(field(rs.getString("databaseaccessrestriction"), info)); @@ -293,10 +290,8 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i rs.getString("issnLinking"), info)); // Journal ds.setResearchentitytypes(listValues(rs.getArray("researchentitytypes"))); - ds.setProvidedproducttypes(listValues(rs.getArray("providedproducttypes"))); ds.setJurisdiction(prepareQualifierSplitting(rs.getString("jurisdiction"))); ds.setThematic(rs.getBoolean("thematic")); - ds.setKnowledgegraph(rs.getBoolean("knowledgegraph")); ds.setContentpolicies(prepareListOfQualifiers(rs.getArray("contentpolicies"))); ds.setSubmissionpolicyurl(rs.getString("submissionpolicyurl")); ds.setPreservationpolicyurl(rs.getString("preservationpolicyurl")); @@ -434,11 +429,11 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i } } - public List processDatasourceOrganization(final ResultSet rs) { + public List processServiceOrganization(final ResultSet rs) { try { final DataInfo info = prepareDataInfo(rs); final String orgId = createOpenaireId(20, rs.getString("organization"), true); - final String dsId = createOpenaireId(10, rs.getString("datasource"), true); + final String dsId = createOpenaireId(10, rs.getString("service"), true); final List collectedFrom = listKeyValues( createOpenaireId(10, rs.getString("collectedfromid"), true), rs.getString("collectedfromname")); diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml index 52462adb4..31b726f39 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/raw_db/oozie_app/workflow.xml @@ -30,6 +30,11 @@ a blacklist of nsprefixes (comma separeted) + + reuseContent + false + reuse content in the aggregator database + sparkDriverMemory memory for driver process @@ -85,12 +90,20 @@ - + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] + + + ${wf:conf('reuseContent') eq false} + ${wf:conf('reuseContent') eq true} + + + + @@ -125,6 +138,55 @@ --actionclaims --nsPrefixBlacklist${nsPrefixBlacklist} + + + + + + + yarn + cluster + GenerateEntities + eu.dnetlib.dhp.oa.graph.raw.GenerateEntitiesApplication + dhp-graph-mapper-${projectVersion}.jar + + --executor-memory ${sparkExecutorMemory} + --executor-cores ${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + + --sourcePaths${contentPath}/db_records,${contentPath}/db_claims + --targetPath${workingDir}/entities + --isLookupUrl${isLookupUrl} + --shouldHashIdtrue + + + + + + + + yarn + cluster + GenerateGraph + eu.dnetlib.dhp.oa.graph.raw.DispatchEntitiesApplication + dhp-graph-mapper-${projectVersion}.jar + + --executor-memory ${sparkExecutorMemory} + --executor-cores ${sparkExecutorCores} + --driver-memory=${sparkDriverMemory} + --conf spark.extraListeners=${spark2ExtraListeners} + --conf spark.sql.queryExecutionListeners=${spark2SqlQueryExecutionListeners} + --conf spark.yarn.historyServer.address=${spark2YarnHistoryServerAddress} + --conf spark.eventLog.dir=${nameNode}${spark2EventLogDir} + --conf spark.sql.shuffle.partitions=7680 + + --sourcePath${workingDir}/entities + --graphRawPath${workingDir}/graph_aggregator + diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index f83e077a3..eb70d39e0 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -109,7 +109,6 @@ SELECT d.lastconsenttermsofusedate AS lastconsenttermsofusedate, d.jurisdiction||'@@@eosc:jurisdictions' AS jurisdiction, d.thematic AS thematic, - -- REMOVED ???: d.knowledge_graph AS knowledgegraph, array(select unnest(d.content_policies)||'@@@eosc:contentpolicies') AS contentpolicies, nullif(trim(d.submission_policy_url), '') AS submissionpolicyurl, nullif(trim(d.preservation_policy_url), '') AS preservationpolicyurl, diff --git a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java index 69552c4dc..948dbfa50 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java +++ b/dhp-workflows/dhp-graph-mapper/src/test/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplicationTest.java @@ -129,9 +129,6 @@ public class MigrateDbEntitiesApplicationTest { getValueAsList("odlanguages", fields), ds.getOdlanguages().stream().map(Field::getValue).collect(Collectors.toList())); assertEquals(getValueAsList("languages", fields), ds.getLanguages()); - assertEquals( - getValueAsList("odcontenttypes", fields), - ds.getOdcontenttypes().stream().map(Field::getValue).collect(Collectors.toList())); assertEquals( getValueAsList("accessinfopackage", fields), ds.getAccessinfopackage().stream().map(Field::getValue).collect(Collectors.toList())); @@ -155,13 +152,11 @@ public class MigrateDbEntitiesApplicationTest { assertEquals(getValueAsString("certificates", fields), ds.getCertificates()); assertEquals(getValueAsList("researchentitytypes", fields), ds.getResearchentitytypes()); - assertEquals(getValueAsList("providedproducttypes", fields), ds.getProvidedproducttypes()); assertEquals("National", ds.getJurisdiction().getClassid()); assertEquals("eosc:jurisdictions", ds.getJurisdiction().getSchemeid()); assertTrue(ds.getThematic()); - assertTrue(ds.getKnowledgegraph()); HashSet cpSchemeId = ds .getContentpolicies() @@ -246,7 +241,7 @@ public class MigrateDbEntitiesApplicationTest { public void testProcessDatasourceOrganization() throws Exception { final List fields = prepareMocks("datasourceorganization_resultset_entry.json"); - final List list = app.processDatasourceOrganization(rs); + final List list = app.processServiceOrganization(rs); assertEquals(2, list.size()); verifyMocks(fields); diff --git a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json index 70fad3323..445334de5 100644 --- a/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json +++ b/dhp-workflows/dhp-graph-mapper/src/test/resources/eu/dnetlib/dhp/oa/graph/raw/services_resultset_entry.json @@ -140,13 +140,6 @@ "Swedish" ] }, - { - "field": "odcontenttypes", - "type": "array", - "value": [ - "Journal articles" - ] - }, { "field": "accessinfopackage", "type": "array", @@ -169,16 +162,6 @@ "type": "string", "value": null }, - { - "field": "dataprovider", - "type": "boolean", - "value": null - }, - { - "field": "serviceprovider", - "type": "boolean", - "value": null - }, { "field": "databaseaccesstype", "type": "string", diff --git a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json index 8a23b4e6a..ce6b10826 100644 --- a/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json +++ b/dhp-workflows/dhp-graph-provision/src/test/resources/eu/dnetlib/dhp/oa/provision/datasource.json @@ -254,24 +254,6 @@ } ], "languages" : [ "English", "German" ], - "odcontenttypes": [ - { - "value": "Journal articles", - "dataInfo": { - "invisible": false, - "inferred": false, - "deletedbyinference": false, - "trust": "0.900", - "inferenceprovenance": null, - "provenanceaction": { - "classid": "sysimport:crosswalk:entityregistry", - "classname": "sysimport:crosswalk:entityregistry", - "schemeid": "dnet:provenanceActions", - "schemename": "dnet:provenanceActions" - } - } - } - ], "accessinfopackage": [ { "value": "http://www.revista.vocesdelaeducacion.com.mx/index.php/index/oai", @@ -387,7 +369,6 @@ "schemename": "eosc:jurisdictions" }, "thematic": true, - "knowledgegraph": true, "contentpolicies": [ { "classid": "Journal article", From 2ade69dea694a6d57ce51a5d7da53bc43ac8a22e Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Mon, 2 May 2022 17:03:31 +0200 Subject: [PATCH 42/83] EOSC Services - minor --- .../dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java | 2 +- .../resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java index c40f9b392..552125307 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/MigrateDbEntitiesApplication.java @@ -233,7 +233,7 @@ public class MigrateDbEntitiesApplication extends AbstractMigrationApplication i final Datasource ds = new Datasource(); - ds.setId(createOpenaireId(10, rs.getString("datasourceid"), true)); + ds.setId(createOpenaireId(10, rs.getString("id"), true)); ds .setOriginalId( Arrays diff --git a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql index eb70d39e0..81eab8163 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql +++ b/dhp-workflows/dhp-graph-mapper/src/main/resources/eu/dnetlib/dhp/oa/graph/sql/queryServices.sql @@ -1,5 +1,5 @@ SELECT - d.id AS datasourceid, + d.id AS id, array_remove(d.id || array_agg(distinct CASE WHEN dp.pid like 'piwik%' THEN di.pid ELSE NULL END) || array_agg(distinct dds.duplicate), NULL) AS originalid, array_remove(array_agg(distinct CASE WHEN di.pid NOT LIKE 'piwik%' THEN di.pid||'###'||di.issuertype||'@@@'||'dnet:pid_types' ELSE NULL END), NULL) as pid, d.officialname AS officialname, From a21fe310e57c5463eafb50205e1b35ab29759cf5 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Mon, 2 May 2022 17:43:20 +0200 Subject: [PATCH 43/83] [EOSCTag] last test and change in the implementation to search in title and descriptio --- .../doiboost/crossref/Crossref2Oaf.scala | 6 +- .../crossref/CrossrefMappingTest.scala | 4 +- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 355 ++++++------ .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 530 ++++++++++++++---- .../eosctag/twitter/dataset/dataset_10.json | 4 +- .../otherresearchproduct_10.json | 10 +- .../eosctag/twitter/software/software_10.json | 2 +- 7 files changed, 620 insertions(+), 291 deletions(-) diff --git a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala index 0ba77ca84..f2d1dde3d 100644 --- a/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala +++ b/dhp-workflows/dhp-doiboost/src/main/scala/eu/dnetlib/doiboost/crossref/Crossref2Oaf.scala @@ -584,12 +584,10 @@ case object Crossref2Oaf { if (dp.length == 10) { return GraphCleaningFunctions.cleanDate(dp) } - } - else if (res.size ==2) { + } else if (res.size == 2) { val dp = f"${res.head}-${res(1)}%02d-01" return GraphCleaningFunctions.cleanDate(dp) - } - else if (res.size ==1) { + } else if (res.size == 1) { return GraphCleaningFunctions.cleanDate(s"${res.head}-01-01") } } diff --git a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala index 9025cd6d2..78ed375c6 100644 --- a/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala +++ b/dhp-workflows/dhp-doiboost/src/test/scala/eu/dnetlib/dhp/doiboost/crossref/CrossrefMappingTest.scala @@ -73,10 +73,10 @@ class CrossrefMappingTest { } - @Test def crossrefIssueDateTest(): Unit = { - val json = Source.fromInputStream(getClass.getResourceAsStream("/eu/dnetlib/doiboost/crossref/issue_date.json")).mkString + val json = + Source.fromInputStream(getClass.getResourceAsStream("/eu/dnetlib/doiboost/crossref/issue_date.json")).mkString assertNotNull(json) assertFalse(json.isEmpty) val resultList: List[Oaf] = Crossref2Oaf.convert(json) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index 16baf70a6..1d0aaa631 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -1,10 +1,14 @@ + package eu.dnetlib.dhp.bulktag; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.application.ArgumentApplicationParser; -import eu.dnetlib.dhp.schema.common.ModelConstants; -import eu.dnetlib.dhp.schema.oaf.*; -import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; +import static eu.dnetlib.dhp.PropagationConstant.readPath; +import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.function.MapFunction; @@ -14,185 +18,214 @@ import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; +import com.fasterxml.jackson.databind.ObjectMapper; -import static eu.dnetlib.dhp.PropagationConstant.readPath; -import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkSession; +import eu.dnetlib.dhp.application.ArgumentApplicationParser; +import eu.dnetlib.dhp.schema.common.ModelConstants; +import eu.dnetlib.dhp.schema.oaf.*; +import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils; public class SparkEoscTag { - private static final Logger log = LoggerFactory.getLogger(SparkEoscTag.class); - public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - public static final Qualifier EOSC_QUALIFIER = OafMapperUtils.qualifier("eosc", - "European Open Science Cloud", - ModelConstants.DNET_SUBJECT_TYPOLOGIES,ModelConstants.DNET_SUBJECT_TYPOLOGIES); - public static final DataInfo EOSC_DATAINFO = OafMapperUtils.dataInfo(false, "propagation", true, false, - OafMapperUtils.qualifier("propagation:subject","Inferred by OpenAIRE", - ModelConstants.DNET_PROVENANCE_ACTIONS,ModelConstants.DNET_PROVENANCE_ACTIONS), "0.9"); - public final static StructuredProperty EOSC_NOTEBOOK = OafMapperUtils.structuredProperty( - "EOSC::Jupyter Notebook", EOSC_QUALIFIER,EOSC_DATAINFO); - public final static StructuredProperty EOSC_GALAXY = OafMapperUtils.structuredProperty( - "EOSC::Galaxy Workflow", EOSC_QUALIFIER, EOSC_DATAINFO); - public final static StructuredProperty EOSC_TWITTER = OafMapperUtils.structuredProperty( - "EOSC::Twitter Data", EOSC_QUALIFIER,EOSC_DATAINFO); + private static final Logger log = LoggerFactory.getLogger(SparkEoscTag.class); + public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + public static final Qualifier EOSC_QUALIFIER = OafMapperUtils + .qualifier( + "eosc", + "European Open Science Cloud", + ModelConstants.DNET_SUBJECT_TYPOLOGIES, ModelConstants.DNET_SUBJECT_TYPOLOGIES); + public static final DataInfo EOSC_DATAINFO = OafMapperUtils + .dataInfo( + false, "propagation", true, false, + OafMapperUtils + .qualifier( + "propagation:subject", "Inferred by OpenAIRE", + ModelConstants.DNET_PROVENANCE_ACTIONS, ModelConstants.DNET_PROVENANCE_ACTIONS), + "0.9"); + public final static StructuredProperty EOSC_NOTEBOOK = OafMapperUtils + .structuredProperty( + "EOSC::Jupyter Notebook", EOSC_QUALIFIER, EOSC_DATAINFO); + public final static StructuredProperty EOSC_GALAXY = OafMapperUtils + .structuredProperty( + "EOSC::Galaxy Workflow", EOSC_QUALIFIER, EOSC_DATAINFO); + public final static StructuredProperty EOSC_TWITTER = OafMapperUtils + .structuredProperty( + "EOSC::Twitter Data", EOSC_QUALIFIER, EOSC_DATAINFO); - public static void main(String[] args) throws Exception { - String jsonConfiguration = IOUtils - .toString( - SparkEoscTag.class - .getResourceAsStream( - "/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json")); + public static void main(String[] args) throws Exception { + String jsonConfiguration = IOUtils + .toString( + SparkEoscTag.class + .getResourceAsStream( + "/eu/dnetlib/dhp/bulktag/input_eoscTag_parameters.json")); - final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); - parser.parseArgument(args); + final ArgumentApplicationParser parser = new ArgumentApplicationParser(jsonConfiguration); + parser.parseArgument(args); - Boolean isSparkSessionManaged = Optional - .ofNullable(parser.get("isSparkSessionManaged")) - .map(Boolean::valueOf) - .orElse(Boolean.TRUE); - log.info("isSparkSessionManaged: {}", isSparkSessionManaged); + Boolean isSparkSessionManaged = Optional + .ofNullable(parser.get("isSparkSessionManaged")) + .map(Boolean::valueOf) + .orElse(Boolean.TRUE); + log.info("isSparkSessionManaged: {}", isSparkSessionManaged); - final String inputPath = parser.get("sourcePath"); - log.info("inputPath: {}", inputPath); + final String inputPath = parser.get("sourcePath"); + log.info("inputPath: {}", inputPath); - final String workingPath = parser.get("workingPath"); - log.info("workingPath: {}", workingPath); + final String workingPath = parser.get("workingPath"); + log.info("workingPath: {}", workingPath); - SparkConf conf = new SparkConf(); + SparkConf conf = new SparkConf(); - runWithSparkSession( - conf, - isSparkSessionManaged, - spark -> { - execEoscTag(spark, inputPath, workingPath); + runWithSparkSession( + conf, + isSparkSessionManaged, + spark -> { + execEoscTag(spark, inputPath, workingPath); - }); - } + }); + } - private static void execEoscTag(SparkSession spark, String inputPath, String workingPath) { + private static void execEoscTag(SparkSession spark, String inputPath, String workingPath) { - readPath(spark, inputPath + "/software", Software.class) - .map((MapFunction) s -> { - List sbject; - if (!Optional.ofNullable(s.getSubject()).isPresent()) - s.setSubject(new ArrayList<>()); - sbject = s.getSubject(); + readPath(spark, inputPath + "/software", Software.class) + .map((MapFunction) s -> { + List sbject; + if (!Optional.ofNullable(s.getSubject()).isPresent()) + s.setSubject(new ArrayList<>()); + sbject = s.getSubject(); - if(containsCriteriaNotebook(s)){ - sbject.add(EOSC_NOTEBOOK); + if (containsCriteriaNotebook(s)) { + sbject.add(EOSC_NOTEBOOK); - } - if(containsCriteriaGalaxy(s)){ - sbject.add(EOSC_GALAXY); - } - return s; - }, Encoders.bean(Software.class) ) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(workingPath + "/software"); + } + if (containsCriteriaGalaxy(s)) { + sbject.add(EOSC_GALAXY); + } + return s; + }, Encoders.bean(Software.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath + "/software"); - readPath(spark, workingPath + "/software" , Software.class) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(inputPath + "/software"); + readPath(spark, workingPath + "/software", Software.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(inputPath + "/software"); - readPath(spark, inputPath + "/otherresearchproduct", OtherResearchProduct.class) - .map((MapFunction) orp -> - { - List sbject; - if (!Optional.ofNullable(orp.getSubject()).isPresent()) - orp.setSubject(new ArrayList<>()); - sbject = orp.getSubject(); - if(containsCriteriaGalaxy(orp)){ - sbject.add(EOSC_GALAXY); - } - if(containscriteriaTwitter(orp)){ - sbject.add(EOSC_TWITTER); - } - return orp; - }, Encoders.bean(OtherResearchProduct.class)) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(workingPath + "/otherresearchproduct"); + readPath(spark, inputPath + "/otherresearchproduct", OtherResearchProduct.class) + .map((MapFunction) orp -> { + List sbject; + if (!Optional.ofNullable(orp.getSubject()).isPresent()) + orp.setSubject(new ArrayList<>()); + sbject = orp.getSubject(); + if (containsCriteriaGalaxy(orp)) { + sbject.add(EOSC_GALAXY); + } + if (containscriteriaTwitter(orp)) { + sbject.add(EOSC_TWITTER); + } + return orp; + }, Encoders.bean(OtherResearchProduct.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath + "/otherresearchproduct"); - readPath(spark, workingPath + "/otherresearchproduct", OtherResearchProduct.class) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(inputPath + "/otherresearchproduct"); + readPath(spark, workingPath + "/otherresearchproduct", OtherResearchProduct.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(inputPath + "/otherresearchproduct"); - readPath(spark, inputPath + "/dataset", Dataset.class) - .map((MapFunction) d -> { - List sbject; - if (!Optional.ofNullable(d.getSubject()).isPresent()) - d.setSubject(new ArrayList<>()); - sbject = d.getSubject(); - if(containscriteriaTwitter(d)){ - sbject.add(EOSC_TWITTER); - } - return d; - } , Encoders.bean(Dataset.class) ) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(workingPath + "/dataset"); + readPath(spark, inputPath + "/dataset", Dataset.class) + .map((MapFunction) d -> { + List sbject; + if (!Optional.ofNullable(d.getSubject()).isPresent()) + d.setSubject(new ArrayList<>()); + sbject = d.getSubject(); + if (containscriteriaTwitter(d)) { + sbject.add(EOSC_TWITTER); + } + return d; + }, Encoders.bean(Dataset.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingPath + "/dataset"); - readPath(spark, workingPath + "/dataset" , Dataset.class) - .write() - .mode(SaveMode.Overwrite) - .option("compression","gzip") - .json(inputPath + "/dataset"); - } + readPath(spark, workingPath + "/dataset", Dataset.class) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(inputPath + "/dataset"); + } - private static boolean containscriteriaTwitter(Result r) { - if (r.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("twitter") && - t.getValue().toLowerCase().contains("data"))) - return true; - if(r.getDescription().stream().anyMatch(d -> d.getValue().toLowerCase().contains("twitter") && - d.getValue().toLowerCase().contains("data") )) - return true; - if(r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("twitter")) && - r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("data"))) - return true; - return false; - } + private static boolean containscriteriaTwitter(Result r) { + Set words = getWordsSP(r.getTitle()); + words.addAll(getWordsF(r.getDescription())); - private static boolean containsCriteriaGalaxy(Result r) { - if (r.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("galaxy") && - (t.getValue().toLowerCase().contains("workflow") || t.getValue().toLowerCase().contains("software")))) - return true; - if(r.getDescription().stream().anyMatch(d -> d.getValue().toLowerCase().contains("galaxy") && - (d.getValue().toLowerCase().contains("workflow") || d.getValue().toLowerCase().contains("software")))) - return true; - if(r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("galaxy")) && - (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("workflow"))) || - r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("software"))) - return true; - return false; - } + if (words.contains("twitter") && + (words.contains("data") || words.contains("dataset"))) + return true; - private static boolean containsCriteriaNotebook(Software s) { - if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("jupyter"))) - return true; - if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python") && - sbj.getValue().toLowerCase().contains("notebook"))) - return true; - if(s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python")) && - s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("notebook"))) - return true; - return false; - } + if (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("twitter")) && + r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("data"))) + return true; + return false; + } - private static boolean containsTitleNotebook(Software s) { - if (s.getTitle().stream().anyMatch(t -> t.getValue().toLowerCase().contains("jupyter") && - t.getValue().toLowerCase().contains("notebook"))) - return true; - return false; - } + private static boolean containsCriteriaGalaxy(Result r) { + Set words = getWordsSP(r.getTitle()); + words.addAll(getWordsF(r.getDescription())); + if (words.contains("galaxy") && + (words.contains("workflow") || words.contains("software"))) + return true; + if (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("galaxy")) && + (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("workflow"))) || + r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("software"))) + return true; + return false; + } + + private static boolean containsCriteriaNotebook(Software s) { + if (s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("jupyter"))) + return true; + if (s + .getSubject() + .stream() + .anyMatch( + sbj -> sbj.getValue().toLowerCase().contains("python") && + sbj.getValue().toLowerCase().contains("notebook"))) + return true; + if (s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("python")) && + s.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("notebook"))) + return true; + return false; + } + + private static Set getSubjects(List s) { + Set subjects = new HashSet<>(); + s.stream().forEach(sbj -> subjects.addAll(Arrays.asList(sbj.getValue().toLowerCase().split(" ")))); + s.stream().forEach(sbj -> subjects.add(sbj.getValue().toLowerCase())); + return subjects; + } + + private static Set getWordsSP(List elem) { + Set words = new HashSet<>(); + elem + .forEach( + t -> words.addAll(Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" ")))); + return words; + } + + private static Set getWordsF(List> elem) { + Set words = new HashSet<>(); + elem + .forEach( + t -> words.addAll(Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" ")))); + return words; + + } } diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java index 2c2334a6c..d96dc7f6c 100644 --- a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -1,8 +1,13 @@ package eu.dnetlib.dhp.bulktag; -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.dnetlib.dhp.schema.oaf.*; +import static eu.dnetlib.dhp.bulktag.community.TaggingConstants.ZENODO_COMMUNITY_INDICATOR; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; @@ -11,6 +16,7 @@ import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.MapFunction; import org.apache.spark.sql.Encoders; import org.apache.spark.sql.Row; +import org.apache.spark.sql.SaveMode; import org.apache.spark.sql.SparkSession; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; @@ -19,26 +25,20 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; +import com.fasterxml.jackson.databind.ObjectMapper; -import static eu.dnetlib.dhp.bulktag.community.TaggingConstants.ZENODO_COMMUNITY_INDICATOR; +import eu.dnetlib.dhp.schema.oaf.*; public class EOSCTagJobTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - - private static SparkSession spark; private static Path workingDir; private static final Logger log = LoggerFactory.getLogger(EOSCTagJobTest.class); - @BeforeAll public static void beforeAll() throws IOException { workingDir = Files.createTempDirectory(EOSCTagJobTest.class.getSimpleName()); @@ -70,23 +70,39 @@ public class EOSCTagJobTest { @Test void jupyterUpdatesTest() throws Exception { - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/software").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), Encoders.bean(Software.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/software"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/software").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), + Encoders.bean(Software.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/software"); - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/dataset").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), Encoders.bean(Dataset.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/dataset"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/dataset").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), + Encoders.bean(Dataset.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/dataset"); - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, OtherResearchProduct.class), Encoders.bean(OtherResearchProduct.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/otherresearchproduct"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/jupyter/otherresearchproduct").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER + .readValue(value, OtherResearchProduct.class), + Encoders.bean(OtherResearchProduct.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/otherresearchproduct"); SparkEoscTag .main( @@ -106,36 +122,109 @@ public class EOSCTagJobTest { Assertions.assertEquals(10, tmp.count()); - Assertions.assertEquals(4, tmp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); + Assertions + .assertEquals( + 4, + tmp + .filter( + s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))) + .count()); - Assertions.assertEquals(2, tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions + .assertEquals( + 2, tmp + .filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions + .assertEquals( + 5, tmp + .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertFalse( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions.assertEquals(5, tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() - .get(0).getSubject().size()); - Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions + .assertEquals( + 9, tmp + .filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions.assertEquals(9, tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions + .assertEquals( + 5, tmp + .filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertFalse( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions.assertEquals(5, tmp.filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")).collect() - .get(0).getSubject().size()); - Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::5aec1186054301b66c0c5dc35972a589")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); + Assertions + .assertEquals( + 9, tmp + .filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - Assertions.assertEquals(9, tmp.filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::639909adfad9d708308f2aedb733e4a0")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); - - List subjects = tmp.filter(sw -> sw.getId().equals("50|od______1582::6e7a9b21a2feef45673890432af34244")).collect() - .get(0).getSubject(); + List subjects = tmp + .filter(sw -> sw.getId().equals("50|od______1582::6e7a9b21a2feef45673890432af34244")) + .collect() + .get(0) + .getSubject(); Assertions.assertEquals(8, subjects.size()); Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("EOSC::Jupyter Notebook"))); Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("jupyter"))); @@ -146,104 +235,313 @@ public class EOSCTagJobTest { Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("flux de gaz"))); Assertions.assertTrue(subjects.stream().anyMatch(s -> s.getValue().equals("flux de liquide"))); + Assertions + .assertEquals( + 10, sc + .textFile(workingDir.toString() + "/input/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)) + .count()); - Assertions.assertEquals(10, sc - .textFile(workingDir.toString() + "/input/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)).count()); + Assertions + .assertEquals( + 0, sc + .textFile(workingDir.toString() + "/input/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)) + .filter( + ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))) + .count()); - Assertions.assertEquals(0, sc - .textFile(workingDir.toString() + "/input/dataset") - .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)).filter(ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); + Assertions + .assertEquals( + 10, sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)) + .count()); + Assertions + .assertEquals( + 0, sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)) + .filter( + ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))) + .count()); - Assertions.assertEquals(10, sc - .textFile(workingDir.toString() + "/input/otherresearchproduct") - .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)).count()); - - Assertions.assertEquals(0, sc - .textFile(workingDir.toString() + "/input/otherresearchproduct") - .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)).filter(ds -> ds.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Jupyter Notebook"))).count()); + // spark.stop(); } - @Test void galaxyUpdatesTest() throws Exception { - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/software").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), Encoders.bean(Software.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/software"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/software").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), + Encoders.bean(Software.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/software"); - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/dataset").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), Encoders.bean(Dataset.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/dataset"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/dataset").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), + Encoders.bean(Dataset.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/dataset"); - spark.read().textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct").getPath()) - .map((MapFunction) value -> OBJECT_MAPPER.readValue(value, OtherResearchProduct.class), Encoders.bean(OtherResearchProduct.class)) - .write() - .option("compression","gzip") - .json(workingDir.toString() + "/input/otherresearchproduct"); + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/galaxy/otherresearchproduct").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER + .readValue(value, OtherResearchProduct.class), + Encoders.bean(OtherResearchProduct.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/otherresearchproduct"); SparkEoscTag - .main( - new String[] { - "-isSparkSessionManaged", Boolean.FALSE.toString(), - "-sourcePath", - workingDir.toString() + "/input", - "-workingPath", workingDir.toString() + "/working" + .main( + new String[] { + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", + workingDir.toString() + "/input", + "-workingPath", workingDir.toString() + "/working" - }); + }); final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); JavaRDD tmp = sc - .textFile(workingDir.toString() + "/input/software") - .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); + .textFile(workingDir.toString() + "/input/software") + .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); Assertions.assertEquals(10, tmp.count()); - Assertions.assertEquals(2, tmp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))).count()); + Assertions + .assertEquals( + 2, + tmp + .filter( + s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))) + .count()); - Assertions.assertEquals(2, tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + Assertions + .assertEquals( + 2, tmp + .filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + Assertions + .assertEquals( + 6, tmp + .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - Assertions.assertEquals(6, tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(tmp.filter(sw -> sw.getId().equals("50|od______1582::501b25d420f808c8eddcd9b16e917f11")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + Assertions + .assertEquals( + 8, tmp + .filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertFalse( + tmp + .filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - Assertions.assertEquals(8, tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() - .get(0).getSubject().size()); - Assertions.assertFalse(tmp.filter(sw -> sw.getId().equals("50|od______1582::581621232a561b7e8b4952b18b8b0e56")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - - JavaRDD orp = sc.textFile(workingDir.toString() + "/input/otherresearchproduct").map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); + JavaRDD orp = sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); Assertions.assertEquals(10, orp.count()); - Assertions.assertEquals(2, orp.filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))).count()); + Assertions + .assertEquals( + 2, + orp + .filter( + s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Galaxy Workflow"))) + .count()); + Assertions + .assertEquals( + 3, orp + .filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + orp + .filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - Assertions.assertEquals(3, orp.filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(orp.filter(sw -> sw.getId().equals("50|od______2017::0750a4d0782265873d669520f5e33c07")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + Assertions + .assertEquals( + 2, orp + .filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertFalse( + orp + .filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - Assertions.assertEquals(2, orp.filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")).collect() - .get(0).getSubject().size()); - Assertions.assertFalse(orp.filter(sw -> sw.getId().equals("50|od______2017::1bd97baef19dbd2db3203b112bb83bc5")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); - - Assertions.assertEquals(3, orp.filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")).collect() - .get(0).getSubject().size()); - Assertions.assertTrue(orp.filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")).collect() - .get(0).getSubject().stream().anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); + Assertions + .assertEquals( + 3, orp + .filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")) + .collect() + .get(0) + .getSubject() + .size()); + Assertions + .assertTrue( + orp + .filter(sw -> sw.getId().equals("50|od______2017::1e400f1747487fd15998735c41a55c72")) + .collect() + .get(0) + .getSubject() + .stream() + .anyMatch(s -> s.getValue().equals("EOSC::Galaxy Workflow"))); } + @Test + void twitterUpdatesTest() throws Exception { + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/twitter/software").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Software.class), + Encoders.bean(Software.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/software"); + + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/twitter/dataset").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER.readValue(value, Dataset.class), + Encoders.bean(Dataset.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/dataset"); + + spark + .read() + .textFile(getClass().getResource("/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct").getPath()) + .map( + (MapFunction) value -> OBJECT_MAPPER + .readValue(value, OtherResearchProduct.class), + Encoders.bean(OtherResearchProduct.class)) + .write() + .mode(SaveMode.Overwrite) + .option("compression", "gzip") + .json(workingDir.toString() + "/input/otherresearchproduct"); + + SparkEoscTag + .main( + new String[] { + "-isSparkSessionManaged", Boolean.FALSE.toString(), + "-sourcePath", + workingDir.toString() + "/input", + "-workingPath", workingDir.toString() + "/working" + + }); + + final JavaSparkContext sc = JavaSparkContext.fromSparkContext(spark.sparkContext()); + + JavaRDD tmp = sc + .textFile(workingDir.toString() + "/input/software") + .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); + + Assertions.assertEquals(10, tmp.count()); + + Assertions + .assertEquals( + 0, + tmp + .filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Twitter Data"))) + .count()); + + JavaRDD orp = sc + .textFile(workingDir.toString() + "/input/otherresearchproduct") + .map(item -> OBJECT_MAPPER.readValue(item, OtherResearchProduct.class)); + + Assertions.assertEquals(10, orp.count()); + + Assertions + .assertEquals( + 3, + orp + .filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Twitter Data"))) + .count()); + + JavaRDD dats = sc + .textFile(workingDir.toString() + "/input/dataset") + .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); + + Assertions.assertEquals(10, dats.count()); + + Assertions + .assertEquals( + 2, + dats + .filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Twitter Data"))) + .count()); + + } } diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json index 0243a4e3d..b441bc423 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json @@ -1,5 +1,5 @@ -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868909,"id":"50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529","originalId":["od______3989::02dd5d2c222191b0b9bd4f33c8e96529"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[{"value":"10.4185/RLCS-2018-1243","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2020-03-03T13:05:26.091Z","dateoftransformation":"2020-03-03T13:06:53.161Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.091Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/562","datestamp":"2018-01-23T15:06:07Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Gallardo-Camacho, Jorge","name":"Jorge","surname":"Gallardo-Camacho","rank":1,"pid":null,"affiliation":null},{"fullname":"Trujillo Fernández, José Ramón","name":"José Ramón","surname":"Trujillo Fernández","rank":2,"pid":null,"affiliation":null},{"fullname":"Jorge Alonso, Ana","name":"Ana","surname":"Jorge Alonso","rank":3,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"yihadismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"viralidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vídeo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"propaganda","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"jihadism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"virality","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"video","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5903 Ideologías Políticas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6310.13 Terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"El individualismo como estrategia","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Individualism as an improvised strategy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Se analiza como el Yihadismo distribuye su mensaje propaganístico en You Tube.\nUniversidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"MediaLab - UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/562"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868954,"id":"50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b","originalId":["od______3989::05d8c751462f9bb8d2b06956dfbc5c7b"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.079Z","dateoftransformation":"2020-03-03T13:06:53.239Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.079Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/227","datestamp":"2017-11-15T16:29:55Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Rico Pérez, Marta","name":"Marta","surname":"Rico Pérez","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Eventos deportivos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Retos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos, celebrado en la Universidad Camilo José Cela.\n\n\n\nDerivado del proyecto de investigación \"La situación de los eventos deportivos en España a través de su estructuras y de sus herramientas\", tiene como finalidad conocer la situación de los eventos deportivos en España. Se realizó un estudio descriptivo holístico en el que se investigaron elementos culturales, el perfil de los recursos humanos, la estructura de los comités, entre otras.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/227"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868909,"id":"50|od______3989::02dd5d2c222191b0b9bd4f33c8e96529","originalId":["od______3989::02dd5d2c222191b0b9bd4f33c8e96529"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[{"value":"10.4185/RLCS-2018-1243","qualifier":{"classid":"doi","classname":"doi","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofcollection":"2020-03-03T13:05:26.091Z","dateoftransformation":"2020-03-03T13:06:53.161Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.091Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/562","datestamp":"2018-01-23T15:06:07Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Gallardo-Camacho, Jorge","name":"Jorge","surname":"Gallardo-Camacho","rank":1,"pid":null,"affiliation":null},{"fullname":"Trujillo Fernández, José Ramón","name":"José Ramón","surname":"Trujillo Fernández","rank":2,"pid":null,"affiliation":null},{"fullname":"Jorge Alonso, Ana","name":"Ana","surname":"Jorge Alonso","rank":3,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"yihadismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"viralidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vídeo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"propaganda","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"terrorism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"jihadism","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"virality","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"video","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5903 Ideologías Políticas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"6310.13 Terrorismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"El individualismo como estrategia","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Individualism as an improvised strategy","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Twitter dataset for sentiment analysis.\nUniversidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"MediaLab - UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/562"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055868954,"id":"50|od______3989::05d8c751462f9bb8d2b06956dfbc5c7b","originalId":["od______3989::05d8c751462f9bb8d2b06956dfbc5c7b"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.079Z","dateoftransformation":"2020-03-03T13:06:53.239Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.079Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/227","datestamp":"2017-11-15T16:29:55Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Rico Pérez, Marta","name":"Marta","surname":"Rico Pérez","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Eventos deportivos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Retos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"I Congreso Nuevos Retos en los Eventos Deportivos","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The usage of twitter collected data for sentiment analysis.\n\n\n\nDerivado del proyecto de investigación \"La situación de los eventos deportivos en España a través de su estructuras y de sus herramientas\", tiene como finalidad conocer la situación de los eventos deportivos en España. Se realizó un estudio descriptivo holístico en el que se investigaron elementos culturales, el perfil de los recursos humanos, la estructura de los comités, entre otras.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/227"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2015-06-20","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869097,"id":"50|od______3989::0f89464c4ac4c398fe0c71433b175a62","originalId":["od______3989::0f89464c4ac4c398fe0c71433b175a62"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:26.069Z","dateoftransformation":"2020-03-03T13:06:53.54Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:26.069Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/802","datestamp":"2018-11-14T15:30:47Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Actividades deportivas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Impacto físico","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigaciones en Ciencias de la Actividad Física y del Deporte CCAFD - UCJC","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Blanca Romero, investigadora y docente de Ciencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela, describe dos de las líneas de investigación que se han desarrollado en el departamento CCAFD de UCJC: el impacto físico de las diferentes actividades deportivas y los métodos de recuperación más eficaces tras el ejercicio físico.\nBlanca también destaca la importancia en el ámbito de la salud los estudios en Ciencias de la Actividad Física y del Deporte.\nCiencias de la Actividad Física y del Deporte en la Universidad Camilo José Cela","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/802"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869215,"id":"50|od______3989::1729c3988199b95d1d566851af7d3c55","originalId":["od______3989::1729c3988199b95d1d566851af7d3c55"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.653Z","dateoftransformation":"2020-03-03T13:06:53.764Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.653Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/801","datestamp":"2018-11-14T15:19:38Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","name":"Ciencias La Actividad Física Y. Del Deporte","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Prevención","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Hidratación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportistas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Electrolitos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deportes de resistencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"La importancia de la hidratación en competiciones resistencia, por Juan del Coso","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Juan del Coso, investigador y profesor en el Grado en Ciencias de la Actividad Física y del Deporte UCJC, presenta el proyecto de investigación que ha realizado el departamento CCAFD de UCJC: la prevención de desequilibrios de agua y electrolitos que se dan en los deportes de resistencia para que los deportistas realicen su actividad de una manera más segura.\nMás información: http://www.ucjc.edu/2016/03/investiga...\nUniversidad Camilo José Cela, Ciencias de la Actividad Física y del Deporte","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Grado en Ciencias de la Actividad Física y del Deporte UCJC","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/801"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2016-03-21","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055869487,"id":"50|od______3989::2e3f34ce90520fae350a7e1148d7dcea","originalId":["od______3989::2e3f34ce90520fae350a7e1148d7dcea"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:54.218Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/800","datestamp":"2018-11-14T13:43:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Actividad Física y del Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Deporte","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Cafeína","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Efectos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alto rendimiento","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Competiciones","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Beneficios","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"2411.06 Fisiología del Ejercicio","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Efectos positivos y negativos del uso de la cafeína en el deporte","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) sobre la cafeína y sus efectos cuando se realiza deporte. https://www.ucjc.edu/2016/08/la-bbc-s...\n\nJuan Del Coso, director del Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela, nos describe cómo está siendo la investigación que desarrolla con deportistas de alto rendimiento y el consumo de cafeína.\n\n\"Nuestra investigación se enmarca dentro del campo de la fisiología del ejercicio y el objetivo que tenemos es investigar los efectos que tiene la cafeína en los deportistas, principalmente saber si es una ayuda ergogénica en la mayor parte de los deportes, pero también conocer qué perjuicios existen para aquellos deportistas que la utilizan para incrementar el rendimiento deportivo\", explica Del Coso.\n\nY es que los datos son muy llamativos: tres de cada cuatro deportistas de alto rendimiento utilizan la cafeína antes de la competición y muchas veces se utiliza sin saber los perjuicios que puede tener para el deportista. \"Lo que estamos investigando es cómo una sustancia, que te puede hacer rendir mejor, cómo puede afectar negativamente cuando termina una competición\".\n\nPero esta investigación no sólo puede extraer conclusiones interesantes y útiles para los deportistas profesionales, \"investigando el deporte de alto rendimiento podemos conocer los beneficios y perjuicios de la cafeína que también afectarían al deportista amateur y hacer un deporte en general más seguro\".\n\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.\nPara el desarrollo de este proyecto de investigación están colaborando el Laboratorio de Fisiología del Ejercicio de la Universidad Camilo José Cela y la Agencia para la Protección de la Salud en el Deporte.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/800"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-06","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json index ae580eab9..1d68a5245 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/otherresearchproduct/otherresearchproduct_10.json @@ -1,10 +1,10 @@ -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"O uso dos pesticidas em Portugal. Que caminhos?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians´ quality of life and the role of health and living context","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Oldest old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Treino de Jovens","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Iniciação Desportiva","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055422336,"id":"50|od______2017::0750a4d0782265873d669520f5e33c07","originalId":["od______2017::0750a4d0782265873d669520f5e33c07"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:28:57.843Z","dateoftransformation":"2019-11-30T04:19:48.897Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:28:57.843Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/4572","datestamp":"2017-05-05T02:01:39Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Godinho, Maria do Céu","name":"Maria Do Céu","surname":"Godinho","rank":1,"pid":null,"affiliation":null},{"fullname":"Costa, Cristina Amaro","name":"Cristina Amaro","surname":"Costa","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Pesticidas","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proteção integrada","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Study of twitter gathered data on the heartquacke of last century","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"A agricultura está inevitavelmente associada a um conjunto de variáveis no ecossistema, onde estão incluídos as pragas e doenças nas culturas e presença de outras plantas que competem pelo alimento, água e luz. Estes agentes são responsáveis por perdas no rendimento que, normalmente, não são aceites pelo agricultor. E é, por isso, que se recorre aos pesticidas: é preciso proteger as culturas do ataque dos seus inimigos.\nTambém é verdade que a agricultura é a atividade desenvolvida pelo Homem que mais se aproxima dos sistemas naturais e tem, assim, um papel central na produção de diversos serviços do ecossistema, como a biodiversidade agrícola, qualidade do solo e água, estabilidade climática e manutenção da paisagem. Ora, o uso dos pesticidas introduz efeitos negativos em todo este sistema: degradam o solo, reduzem a qualidade e disponibilidade de água, causam poluição e perda de habitats selvagens e de biodiversidade. Aqui reside a encruzilhada na proteção das culturas.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Quercus","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/chicago-covid-19"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/4572"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423621,"id":"50|od______2017::1bd97baef19dbd2db3203b112bb83bc5","originalId":["od______2017::1bd97baef19dbd2db3203b112bb83bc5"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.994Z","dateoftransformation":"2019-11-30T04:19:58.463Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.994Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5415","datestamp":"2019-02-23T03:01:23Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Alves, Sara","name":"Sara","surname":"Alves","rank":4,"pid":null,"affiliation":null},{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Quality of life","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Twitter in the new sociaety: differences to the past","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The interest of the scienti􏰀c community to study the centenarian population has been growing due to the signi􏰀cant expansion of life expectancy and human longevity. Evidences about their quality of life (QoL) are, nevertheless, still limited. Different conceptualizations of QoL, the overvaluation of the negative aspects of advanced age and the heterogeneity of the oldest old are some issues that could explain the dif􏰀culties in this assessment. Objectives: This study aims to analyze the perceived QoL in a sample of centenarians and analyze if there are significant life context (community vs institutional) and health (objective and subjective perception) differences.\nMethods: A subsample of 59 Portuguese centenarians who participated in the PT100_Oporto Centenarian Study, conducted in 2013 was considered. Descriptive and chi-square analysis were conducted.\nResults: Most centenarians perceived their QoL in a very positive manner (50.8% rated it as “good”, 6.8% as “very good” and 3.4% as “excellent”); 28.8% perceived it as “acceptable” and 10.2% as “bad”. No significant statistical differences were found for the considered variables.\nConclusions: Centenarians seem to present high levels of perceived QoL, which can be associated with a great ability to adapt to adverse situations that occur through their lives. Neither contextual and health aspects seem to in􏰂uence the perception of QoL in this particular sample study. Nonetheless, more research is \nneeded to understand the speci􏰀cities of the QoL in the centenarian population, namely the role of psychological and social variables.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/edenis"},{"id":"http://zenodo.org/communities/aginfra"}, {"id":"http://zenodo.org/communities/primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5415"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055423836,"id":"50|od______2017::1e400f1747487fd15998735c41a55c72","originalId":["od______2017::1e400f1747487fd15998735c41a55c72"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.996Z","dateoftransformation":"2019-11-30T04:19:59.556Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.996Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5422","datestamp":"2019-02-23T03:01:29Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":3,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"TWITTER","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Census","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"What about the Portuguese oldest old? A global overview using census data","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Background\nThe older population is itself aging, and achieving an advanced age is becoming more common worldwide. In Portugal, individuals aged 80+ represent 5.6 % of the total population and 26.5 % of the popu- lation were aged 65 and over in 2011. Having a national profile on this population will give important information to develop interven- tion programs and identify the areas requiring most attention. Ob- jective: This study aims to provide a profile of the Portuguese oldest old, as given by the last national census data.\nMethods\nThe characteristics of all residents aged 80+ (N = 532,219) were ana- lysed considering socio-demographic information (gender, marital status, education, type of residence, place of birth, income) and the existence of difficulties in functional, sensorial and cognitive activities due to health problems or ageing.\nResults\nThe majority of the most aged are females (64.5 %), widowed (53.9 %), and present low educational levels (46.1 % never attended school and 31.6 % do not know how to read/write). Own pensions constitute the main source of income (96.3 %) and the majority live in private households (88.8 %), with 43.2 % currently living in the place where they were born. The majority (73.0 %) reported major difficulties in at least one functional activity – bathing/dressing, walk- ing/climbing stairs, seeing, hearing, memory/concentration, under- standing others/being understood.\nConclusions\nThe high percentage of oldest old living in private households and the presence of functional limitations point to the importance of in- formal care and community care services to support this population. Further studies paying attention to their needs and utilisation of ser- vices are required.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"ee"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/c2smart"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5422"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424072,"id":"50|od______2017::210281c5bc1c739a11ccceeeca806396","originalId":["od______2017::210281c5bc1c739a11ccceeeca806396"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-11-29T04:22:08.265Z","dateoftransformation":"2019-11-30T04:20:00.603Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-11-29T04:22:08.265Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1089","datestamp":"2018-11-26T15:31:28Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Avelar-Rosa, Bruno","name":"Bruno","surname":"Avelar-Rosa","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"TWITTER","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"DATA","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Metodologia","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Didática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Treino de Jovens: Princípios Orientadores","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Documento que recolhe os traços gerais da intervenção do treinador de jovens, considerando as possíveis orientações pedagógicas, os eixos de evolução do praticante, os diferentes modelos didáticos de iniciação, os momentos idóneos para a intervenção nas diferentes qualidades motoras e a relação entre o treinador de jovens e os restantes agentes implicados no processo (destacando-se, naturalmente, os pais).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Confederação do Desporto de Portugal","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"beopen"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"fam"},{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"propagation","inferred":true,"invisible":false,"provenanceaction":{"classid":"propagation:community:productsthroughsemrel","classname":" Propagation of result belonging to community through semantic relation","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.85"}],"id":"covid-19"},{"id":"http://zenodo.org/communities/primefish"}, {"id":"http://zenodo.org/communities/c2smart"}] ,"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1089"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424163,"id":"50|od______2017::225a8382b6a3db76fba97c2dc146f937","originalId":["od______2017::225a8382b6a3db76fba97c2dc146f937"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:26:56.251Z","dateoftransformation":"2019-11-30T04:20:01.127Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:26:56.251Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/3290","datestamp":"2016-07-14T02:01:33Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Millenium","name":null,"surname":null,"rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Referências bibliográficas ao estilo APA","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"primefish"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/3290"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2016-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424299,"id":"50|od______2017::241d59362b075000e89d276e7bb6badc","originalId":["od______2017::241d59362b075000e89d276e7bb6badc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-09-06T04:39:29.25Z","dateoftransformation":"2019-11-30T04:20:01.631Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-09-06T04:39:29.25Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/1190","datestamp":"2019-09-04T02:00:41Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Menezes, Luís","name":"Luís","surname":"Menezes","rank":1,"pid":null,"affiliation":null},{"fullname":"Ribeiro, António","name":"António","surname":"Ribeiro","rank":2,"pid":null,"affiliation":null},{"fullname":"Martins, Ana Patrícia","name":"Ana Patrícia","surname":"Martins","rank":3,"pid":null,"affiliation":null},{"fullname":"Rodrigues, Cátia","name":"Cátia","surname":"Rodrigues","rank":4,"pid":null,"affiliation":null},{"fullname":"Gomes, Helena","name":"Helena","surname":"Gomes","rank":5,"pid":null,"affiliation":null},{"fullname":"Novo, Sónia","name":"Sónia","surname":"Novo","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Matemática","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Capacidades tranversais","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Penso, comunico, resolvo","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Esta brochura destina-se a alunos do ensino básico (1.º a 9.º anos), tendo como objetivo fornecer informação sobre as capacidades transversais que o novo Programa de Matemática português (2007) veio destacar.\nEscola Superior de Educação de Viseu","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"ESEV","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/fake"}],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/1190"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424626,"id":"50|od______2017::28fe553056801d4a764edac6bec334ec","originalId":["od______2017::28fe553056801d4a764edac6bec334ec"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:03.799Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5432","datestamp":"2019-02-23T03:01:24Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":3,"pid":null,"affiliation":null},{"fullname":"Jopp, Daniela","name":"Daniela","surname":"Jopp","rank":4,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Europe","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians in Europe","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"In the last decade, the number of centenarians world- wide has increased. Following this tendency, the number of centenarian studies has also exponentially augmented. Given the complexity to conduct research with centenarians, elementary information on this specific age group remains unknown at a European level. This paper compares basic characteristics of centenarians from 32 European coun- tries based on Census 2011. Results revealed that France is the country with higher ratio of centenarians, followed by Italy and Greece; on the other hand Croatia, Romania and Bulgaria present the lower ratio. The distribution accord- ing to gender is similar for all countries, with higher ratio of women reaching 100 years old. Different patterns of education level were found on countries where this infor- mation was reliable: Portugal and Greece are the countries with lower levels of education, with more than half without formal education; Finland, UK and Iceland are the countries with higher levels of education, with all centenarians having at least lower secondary education. Analysing the residence situation (living in the community or living in the institu- tion), Romania, Bulgaria, Lithuania, Greece and Latvia are the countries that present higher percentages of centenarians living in the community; Iceland is the country with lower percentage of centenarians living in the community. A posi- tive correlation between the number of centenarians and the percentage of Total Health Expenditure of GDP is observed. This study provides important information about the current profile of European centenarians, which is compared to gen- eral information on the centenarian population from EUA and Asia.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5432"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424626,"id":"50|od______2017::28fe553056801d4a764edac6bec334ec","originalId":["od______2017::28fe553056801d4a764edac6bec334ec"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:03.799Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5432","datestamp":"2019-02-23T03:01:24Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":3,"pid":null,"affiliation":null},{"fullname":"Jopp, Daniela","name":"Daniela","surname":"Jopp","rank":4,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Twitter data","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Centenarians","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Centenarians in Europe","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"In the last decade, the number of centenarians world- wide has increased. Following this tendency, the number of centenarian studies has also exponentially augmented. Given the complexity to conduct research with centenarians, elementary information on this specific age group remains unknown at a European level. This paper compares basic characteristics of centenarians from 32 European coun- tries based on Census 2011. Results revealed that France is the country with higher ratio of centenarians, followed by Italy and Greece; on the other hand Croatia, Romania and Bulgaria present the lower ratio. The distribution accord- ing to gender is similar for all countries, with higher ratio of women reaching 100 years old. Different patterns of education level were found on countries where this infor- mation was reliable: Portugal and Greece are the countries with lower levels of education, with more than half without formal education; Finland, UK and Iceland are the countries with higher levels of education, with all centenarians having at least lower secondary education. Analysing the residence situation (living in the community or living in the institu- tion), Romania, Bulgaria, Lithuania, Greece and Latvia are the countries that present higher percentages of centenarians living in the community; Iceland is the country with lower percentage of centenarians living in the community. A posi- tive correlation between the number of centenarians and the percentage of Total Health Expenditure of GDP is observed. This study provides important information about the current profile of European centenarians, which is compared to gen- eral information on the centenarian population from EUA and Asia.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5432"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055424730,"id":"50|od______2017::2a777b5c11f070ece546d75162047179","originalId":["od______2017::2a777b5c11f070ece546d75162047179"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.998Z","dateoftransformation":"2019-11-30T04:20:04.285Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.998Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5428","datestamp":"2019-02-23T03:01:30Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"da Costa Teixeira, Laetitia","name":"Laetitia","surname":"Da Costa Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Paul, Constança","name":"Constança","surname":"Paul","rank":3,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"100 years old","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Survival after 100 years of age in Portuguese centenarians","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The group of individuals aged 80 and over is growing faster than other segment of the population, and within this group the number of centenarians has risen exponentially worldwide. This phenomena lead to an increasing number of centenarian studies, improving the knowledge about this population, validating the idea of heterogeneity that char- acterizes this group. However, the factors influencing their aging survival remains understudied. The present study aims to identify factors associated with survival after 100 years old in a sample of Portuguese centenarians. After being included in a population-based study on centenarians (PT100–Oporto Centenarian Study), each participant was assessed by a tel- ephone interview every 6 months in order to assess his/her health condition. Follow-up was considered as the time (in months) between 100th birthday and death or the last tel- ephone contact. Survival analysis was performed to iden- tify factors associated with survival after 100 years old. Sociological and medical factors were considered. 140 cen- tenarians were assessed and 115 (82.1%) died. The median survival time after 100 years old was 38 months. Survival after age 100 was associated with acute disease (last month), self-perception of physical condition and drinking status. This study intends do identify factors that predict longevity in long-lived individuals. Findings recognize the importance of factors related with health status, self-perception of physi- cal condition and life style (no alcohol consume) for survival. Further studies should explore the predictive value of these factors, as well as psychosocial aspects, considering living longer but also the quality of time beyond one hundred.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5428"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2018-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055426968,"id":"50|od______2017::48eb86b38e6e2cfb94bf0a4663848c10","originalId":["od______2017::48eb86b38e6e2cfb94bf0a4663848c10"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2019-02-25T04:30:56.995Z","dateoftransformation":"2019-11-30T04:20:13.611Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-02-25T04:30:56.995Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/5416","datestamp":"2019-02-23T03:01:21Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Teixeira, Laetitia","name":"Laetitia","surname":"Teixeira","rank":1,"pid":null,"affiliation":null},{"fullname":"Araújo, Lia","name":"Lia","surname":"Araújo","rank":2,"pid":null,"affiliation":null},{"fullname":"Duarte, Natália","name":"Natália","surname":"Duarte","rank":3,"pid":null,"affiliation":null},{"fullname":"Brandão, Daniela","name":"Daniela","surname":"Brandão","rank":4,"pid":null,"affiliation":null},{"fullname":"Azevedo, Maria João","name":"Maria João","surname":"Azevedo","rank":5,"pid":null,"affiliation":null},{"fullname":"Ribeiro, Oscar","name":"Oscar","surname":"Ribeiro","rank":6,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognition","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Survival","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Functional capacity","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Cognition and functionality: how do they related to time lived after 100 years of age?","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Introduction: The number of centenarians has greatly increased in Portugal in the last decades. Therefore, the analysis of survival time after becoming a centenarian and related factors constitute an import- ant issue for the quality of care provision. The objective of this study is to identify health related factors associated with the time lived after being 100 years of age. Methods: Data come from the population-based study PT100 (Oporto Centenarian Study) and considers information gathered through face-to-face interviews with centenarians and their proxies during 2013. Study eligibility criteria included being 100 and more years old and living in the Oporto Metropolitan Area. Survival analyses were performed in order to identify factors associated with survival after the 100. Functional status (e.g., walking, being bedrid- den) and specific health conditions (e.g. presence/absence of cognitive impairment) were considered as potential factors. Results: The sam- ple comprises 140 centenarians with approximately 14.5 months as median survival time after their 100th anniversary. Centenarians who were bedridden presented a higher probability to live after 100 years when compared with functionally independent centenarians. Presence of cognitive impairment was not associated with the time lived after 100 years old. Conclusions: Given the increasing number of centenarians in Portugal, different studies based on this population need to be consid- ered. The present study, focused on the life after 100 years old, provides new information about this topic contributing to the formulation of new scientific questions for this population.\ninfo:eu-repo/semantics/publishedVersion","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0020","classname":"Other ORP type","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/5416"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055427049,"id":"50|od______2017::4a1bcdd965b879fbac86a7d3b947a6cc","originalId":["od______2017::4a1bcdd965b879fbac86a7d3b947a6cc"],"collectedfrom":[{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null}],"pid":[],"dateofcollection":"2018-05-08T17:24:51.637Z","dateoftransformation":"2019-11-30T04:20:13.727Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2018-05-08T17:24:51.637Z","altered":true,"baseURL":"http://repositorio.ipv.pt/oai/openaire","identifier":"oai:repositorio.ipv.pt:10400.19/995","datestamp":"2014-07-15T01:00:31Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Oliveira, Ana Maria","name":"Ana Maria","surname":"Oliveira","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"other","classname":"other","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"por","classname":"Portuguese","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Cognição e Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Processamento da Linguagem","qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:result_subject","schemename":"dnet:result_subject"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Processar a Linguagem através dos Sentidos: entre a doçura e a amargura","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":{"value":"Instituto de Literatura Comparada Margarida Losa – Faculdade de Letras da Universidade do Porto","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0010","classname":"Lecture","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"url":["http://hdl.handle.net/10400.19/995"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::2017","value":"Repositório Científico do Instituto Politécnico de Viseu","dataInfo":null},"dateofacceptance":{"value":"2010-07-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"contactperson":[],"contactgroup":[],"tool":[]} diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json index 390ad6f16..3465b6ae1 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/software/software_10.json @@ -1,5 +1,5 @@ {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055698387,"id":"50|od______1582::4132f5ec9496f0d6adc7b00a50a56ff4","originalId":["od______1582::4132f5ec9496f0d6adc7b00a50a56ff4"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:34:35.459Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442576","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Hassouna, Melynda","name":"Melynda","surname":"Hassouna","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value": "aaaa","qualifier": {"classid": "","classname": "","schemeid": "","schemename": "" },"dataInfo": {"invisible": false,"inferred": false,"deletedbyinference": false,"trust": "0.9","inferenceprovenance": "","provenanceaction": {"classid": "sysimport:crosswalk:repository","classname": "sysimport:crosswalk:repository","schemeid": "dnet:provenanceActions","schemename": "dnet:provenanceActions"}}}],"title":[{"value":"Charte graphique et site web International Symposium EmiLi 2012","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/dimpo"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|doajarticles::8cec81178926caaca531afbd8eb5d64c","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442576"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"richesse allélique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055711745,"id":"50|od______1582::501b25d420f808c8eddcd9b16e917f11","originalId":["od______1582::501b25d420f808c8eddcd9b16e917f11"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.667Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255703","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"twitter","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"data","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Contrib","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"This program provides a measure of the contribution of each population to total diversity (measured by H, the expected heterozygosity, or by R, the allelic richness). This contribution is splitted in two components: one due to the diversity of the population, the other due to its differentiation from the remaining populations. The program may also be used to obtain allelic richness after rarefaction (to a sample size chosen by the investigator) for a set of populations. It can be used in conjunction with the program haplodiv, based on the paper by Pons & Petit 1995, TAG 90, 462-470, which will provide standard errors for the diversity and differentiation parameters. The input file is a text file (see example: rartest.txt), where the first line indicates the number of haplotypes (here it is 18), the number of populations (here it is 4), and the rarefaction size (it should not be larger than the smallest population sample size; here the rarefaction size is 10, and the smallest sample size is 20). Then follows the data for each population (line), with the number of each haplotype in each population (don't use relative frequencies): 18 4 10 1 0 1 0 0 0 1 1 ...(18 columns) 0 1 2 1 1 0 13 0 ... 0 0 8 0 0 3 6 0 ... 1 0 9 0 0 3 7 1 Results can be seen in the output file (rartest.out here; to be printed horizontally). General measures are given first: within population diversity (Hs), total diversity (Ht), and Gst are given, followed by similar measures based on allelic richness. Then you get the results for each population : H, its standard error, allelic richness after rarefaction, the divergence from the other populations (DHs, DHt, DGst, see the paper in Conservation Biology), and the contributions Ct, Cs, Cd followed by the contributions for allelic richness measures. The program is written for an haploid gene but may be used for nuclear genes, assuming Hardy-Weinberg equilibrium. How to proceed when there are several loci? Do not take the mean across Gst or across Contributions. They are ratios, so you should take the mean of the numerator and the mean of the denominator separately. For the denominator: take the mean of hT and Rt-1 across loci. For the numerator: multiply the contributions by hT or Rt-1 (respectively for contributions to diversity or to allelic richness) and take the mean of these products across loci. Then compute the ratio of the two means.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/covid_19_senacyt_abc_panama"},{"id":"covid-19"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::87ae6fb631f7c8a627e8e28785d9992d","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255703"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2006-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055718681,"id":"50|od______1582::581621232a561b7e8b4952b18b8b0e56","originalId":["od______1582::581621232a561b7e8b4952b18b8b0e56"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T19:54:07.673Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:255707","datestamp":"2018-03-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Petit R.J., Remy","name":"Remy","surname":"Petit R J","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"notebook","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"gène polymorphe","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"différenciation génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"loci","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"application informatique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"diversité des populations","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"haploïde","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Logiciels Permut et cpSSR","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"THE PROGRAM PERMUT AND THE PROGRAM CpSSR BECOME ONLY ONE PROGRAM.[br/] When you run the program you can choose if you want to use permut or CpSSR.[br/][br/] README PERMUT[br/] This program is based on the papers (Pons & Petit Genetics 1996, 144:1237-1245) and (Burban et al. 1999, Mol Ecol 8, 1593-1602).[br/] It computes measures of diversity and differenciation from haploid population genetic data, when a measure of the distance between haplotypes is available, and test whether the differentiation and diversity measures differ from the equivalent measures that do not take into account the distances between haplotypes (ie, that consider all haplotypes equally divergent).[br/] The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of characters distinguishing the variants (for instance number of polymorphic fragments, or of polymorphic nucleotide sites). The program asks for the number of permutations to be made.[br/] see the example (\\ExamplePermut\\input.txt and \\ExamplePermut\\output.out).[br/] Then follows the number of individuals having a given cytotype (column) in a given population (row). Finally, and without interruption, provide the table of character states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Nst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Nst value is larger than the Gst, we count how many permutated values are larger than the observed Nst. If you have 5% of the permutated values greater than the observed value of Nst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Nst.[br/] [br/] README CpSSR :[br/] It computes measures of diversity and differenciation from haploid population genetic data, when the difference in number of repeats between alleles is available, and tests whether the differentiation and diversity measures differ from the equivalent measures when the distances between haplotypes is not considered (ie, when all haplotypes are considered equally divergent). The source file should be an ASCII file (its name should have 8 characters maximum: 12345678.txt) and should include the following information:[br/] First line :[br/] Number of cytotypes Number of populations Number of cpSSR loci. The program asks for the number of permutations to be made. See the example (\\ExampleCpSSR\\input.txt and \\ExamplePermut\\CpSSR.out).[br/] Then follows the number of individuals having a given haplotype (column) in a given population (row). Finally, and without interruption, provide the table of length variant states for all haplotypes, where each line corresponds to one haplotype, and each column to a character. No column should be empty (no missing haplotype) and each population (row) should be composed of AT LEAST 3 individuals![br/] The output file provides permutated values of Rst in a single row, and the value of the last 5% and last 1%. The mean of the permutated values is also given and should be close to the Gst value (by construction). To test if the observed Rst value is larger than the Gst, you count how many permutated values are larger than the observed Rst. If you have 5% of the permutated values greater than the observed value of Rst, then your test is not significant, otherwise it is and you know the P-value. This is akin to testing if Gst = Rst. I usually go for a one-sided test (i.e. I test if Rst>Gst, and not Rst<>Gst).","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[{"id":"http://zenodo.org/communities/euromixproject"}],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"10|opendoar____::fd4c2dc64ccb8496e6f1f94c85f30d06","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/255707"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2012-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055721330,"id":"50|od______1582::5aec1186054301b66c0c5dc35972a589","originalId":["od______1582::5aec1186054301b66c0c5dc35972a589"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:54:28.567Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:402973","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Muratorio, Sylvie","name":"Sylvie","surname":"Muratorio","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"aaaa","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"modèle physiologique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"approche génétique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"castanea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"fagus sylvatica","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"PDG Documentation, version 2","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/402973"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055728345,"id":"50|od______1582::626bf0af9988f811e6290d694587edf5","originalId":["od______1582::626bf0af9988f811e6290d694587edf5"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:57:53.59Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:396375","datestamp":"2018-12-20T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Chades, Iadine","name":"Iadine","surname":"Chades","rank":1,"pid":null,"affiliation":null},{"fullname":"Chapron, Guillaume","name":"Guillaume","surname":"Chapron","rank":2,"pid":null,"affiliation":null},{"fullname":"Cros, Marie-Josee","name":"Marie-Josee","surname":"Cros","rank":3,"pid":null,"affiliation":null},{"fullname":"Garcia, Frederick","name":"Frederick","surname":"Garcia","rank":4,"pid":null,"affiliation":null},{"fullname":"Sabbadin, Regis","name":"Regis","surname":"Sabbadin","rank":5,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"jupyter","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The Markov Decision Processes (MDP) toolbox proposes functions related to the resolution of discrete-time Markov Decision Processes: finite horizon, value iteration, policy iteration, linear programming algorithms with some variants and also proposes some functions related to Reinforcement Learning.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":null,"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/396375"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} From 9e12cb3c9266184df07ca4549461e87b9729d1ca Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 3 May 2022 11:55:45 +0200 Subject: [PATCH 44/83] EOSC Services - removed field knowledgegraph; depending on the released schema module --- .../eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java | 5 ----- pom.xml | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java index b811a7a0f..27128138c 100644 --- a/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java +++ b/dhp-workflows/dhp-graph-provision/src/main/java/eu/dnetlib/dhp/oa/provision/utils/XmlRecordFactory.java @@ -774,11 +774,6 @@ public class XmlRecordFactory implements Serializable { metadata.add(XmlSerializationUtils.asXmlElement("thematic", ds.getThematic().toString())); } - if (ds.getKnowledgegraph() != null) { - metadata - .add(XmlSerializationUtils.asXmlElement("knowledgegraph", ds.getKnowledgegraph().toString())); - } - if (ds.getContentpolicies() != null) { metadata .addAll( diff --git a/pom.xml b/pom.xml index 03a4496d7..54070f654 100644 --- a/pom.xml +++ b/pom.xml @@ -801,7 +801,7 @@ 3.3.3 3.4.2 [2.12,3.0) - [2.11.34-eosc-SNAPSHOT] + [2.12.0] [4.0.3] [6.0.5] [3.1.6] From 3aeedd931a055dca66d0ef4aabed23a0608770f2 Mon Sep 17 00:00:00 2001 From: "miriam.baglioni" Date: Wed, 4 May 2022 10:06:38 +0200 Subject: [PATCH 45/83] [EOSCTag] fixed issue in case description is null. Modified test resources and classes --- .../eu/dnetlib/dhp/bulktag/SparkEoscTag.java | 30 +++++++++++++------ .../dhp/bulktag/oozie_app/workflow.xml | 4 +-- .../dnetlib/dhp/bulktag/EOSCTagJobTest.java | 6 ++-- .../eosctag/galaxy/dataset/dataset_10.json | 2 +- .../eosctag/galaxy/software/software_10.json | 3 +- .../eosctag/twitter/dataset/dataset_10.json | 1 + 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java index 1d0aaa631..561e1d57e 100644 --- a/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java +++ b/dhp-workflows/dhp-enrichment/src/main/java/eu/dnetlib/dhp/bulktag/SparkEoscTag.java @@ -179,12 +179,11 @@ public class SparkEoscTag { Set words = getWordsSP(r.getTitle()); words.addAll(getWordsF(r.getDescription())); if (words.contains("galaxy") && - (words.contains("workflow") || words.contains("software"))) + words.contains("workflow")) return true; if (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("galaxy")) && - (r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("workflow"))) || - r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("software"))) + r.getSubject().stream().anyMatch(sbj -> sbj.getValue().toLowerCase().contains("workflow"))) return true; return false; } @@ -214,17 +213,30 @@ public class SparkEoscTag { private static Set getWordsSP(List elem) { Set words = new HashSet<>(); - elem - .forEach( - t -> words.addAll(Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" ")))); + Optional + .ofNullable(elem) + .ifPresent( + e -> e + .forEach( + t -> words + .addAll( + Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" "))))); return words; } private static Set getWordsF(List> elem) { Set words = new HashSet<>(); - elem - .forEach( - t -> words.addAll(Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" ")))); + Optional + .ofNullable(elem) + .ifPresent( + e -> e + .forEach( + t -> words + .addAll( + Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" "))))); +// elem +// .forEach( +// t -> words.addAll(Arrays.asList(t.getValue().toLowerCase().replaceAll("[^a-zA-Z ]", "").split(" ")))); return words; } diff --git a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml index 91fca7d61..4c34886e6 100644 --- a/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml +++ b/dhp-workflows/dhp-enrichment/src/main/resources/eu/dnetlib/dhp/bulktag/oozie_app/workflow.xml @@ -29,7 +29,7 @@ - + Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}] @@ -226,7 +226,7 @@ --sourcePath${outputPath} --workingPath${workingDir}/eoscTag - + diff --git a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java index d96dc7f6c..55d3939e1 100644 --- a/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java +++ b/dhp-workflows/dhp-enrichment/src/test/java/eu/dnetlib/dhp/bulktag/EOSCTagJobTest.java @@ -322,7 +322,7 @@ public class EOSCTagJobTest { .textFile(workingDir.toString() + "/input/software") .map(item -> OBJECT_MAPPER.readValue(item, Software.class)); - Assertions.assertEquals(10, tmp.count()); + Assertions.assertEquals(11, tmp.count()); Assertions .assertEquals( @@ -534,11 +534,11 @@ public class EOSCTagJobTest { .textFile(workingDir.toString() + "/input/dataset") .map(item -> OBJECT_MAPPER.readValue(item, Dataset.class)); - Assertions.assertEquals(10, dats.count()); + Assertions.assertEquals(11, dats.count()); Assertions .assertEquals( - 2, + 3, dats .filter(s -> s.getSubject().stream().anyMatch(sbj -> sbj.getValue().equals("EOSC::Twitter Data"))) .count()); diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json index 0243a4e3d..645a7522f 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/dataset/dataset_10.json @@ -7,4 +7,4 @@ {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870582,"id":"50|od______3989::752fd0b2bbac1ea1cc50e52fd46eb663","originalId":["od______3989::752fd0b2bbac1ea1cc50e52fd46eb663"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.561Z","dateoftransformation":"2020-03-03T13:06:55.716Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.561Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/798","datestamp":"2018-11-14T12:57:26Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Psicología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcohol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Dependencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Proyectos de investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Alcoholismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Realidad virtual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Psicología conductual","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Investigación - Intervención basada en realidad virtual sobre la dependencia del alcohol","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Proyecto de investigación que se están desarrollando en la Universidad Camilo José Cela (UCJC) con tecnología aplicada al abandono de la dependencia del alcohol. \nRosa Jurado, profesora e investigadora de UCJC https://www.ucjc.edu/, explica cómo se conjuga el alcoholismo con la realidad virtual. \"Mi investigación consiste en desarrollar una técnica de intervención o rehabilitación que tiene como propósito fomentar la capacidad de inhibición para que las personas que tienen dependencia del alcohol sean capaces de controlar su conducta de aproximación hacia aquello que tiene que ver con el consumo de alcohol\".\n\nEn esta investigación, liderada por la Universidad Camilo José Cela, están participando, el Instituto de Investigación Biomédica del Hospital 12 de Octubre y la Universidad Politécnica de Madrid, con el CeDint. \"En nuestro equipo de investigación pensamos que, además del deseo de consumo, existen una carencia clara de capacidad de control inhibitorio en este tipo de personas\", destaca Rosa Jurado.\n\nLa realidad virtual sirve, según explica Gabriel Rubio, jefe de Psiquiatría del Hospital 12 de Octubre, \"para dar un paso más, para ver cómo reacciona un sujeto en un ambiente que no es el real, pero se parece mucho al real\". El objetivo final de estas acciones es \"mejorar la capacidad del individuo para poner en marcha mecanismos de inhibición conductual, para que el sujeto sea capaz de decir que no\".\n\nY no acaba ahí el proceso. La fase final del tratamiento se enfoca en que el paciente \"sea capaz de reconstruir su vida\" a través de programas de entrenamiento de habilidades sociales, asertividad, familias... \"Juntando todas las áreas de intervención, la abstinencia se mantiene mucho más tiempo y las recaídas disminuyen\".","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[{"value":"Universidad Camilo José Cela, Vicerrectorado de Innovación","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/798"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2017-10-05","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870750,"id":"50|od______3989::7fcbe3a03280663cddebfd3cb9203177","originalId":["od______3989::7fcbe3a03280663cddebfd3cb9203177"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.652Z","dateoftransformation":"2020-03-03T13:06:55.95Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.652Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/796","datestamp":"2018-11-05T13:36:54Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Redes sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"III Liga de Debate CICAE","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Instantaneidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información periodística","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Fake news","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Jorge Gallardo - Liga de Debate CICAE","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Jorge Gallardo, profesor de Derecho en la Universidad Camilo José Cela (UCJC), Doctor en Comunicación Audiovisual y MBA en Empresas Audiovisuales. Subdirector de Espejo Público en Antena 3 Noticias. \n\nEn esta ocasión, Jorge Gallardo habla sobre las redes sociales, cómo han transformado la manera en la que nos comunicamos y nos informamos. \n\nIII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la tercera edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/796"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872001,"id":"50|od______3989::d791339867bec6d3eb2104deeb4e4961","originalId":["od______3989::d791339867bec6d3eb2104deeb4e4961"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.586Z","dateoftransformation":"2020-03-03T13:06:57.721Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.586Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/645","datestamp":"2018-04-12T07:59:27Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Transferencia de Conocimiento e Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Tecnología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"UCJC Open Science Day 2018","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"El UCJC Open Science Day tiene como objetivo mostrar las actividades de investigación llevadas a cabo por investigadores de la Universidad Camilo José Cela (UCJC) a todos los miembros de la UCJC.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/645"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} \ No newline at end of file diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json index 7c7c52495..b63860c12 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/galaxy/software/software_10.json @@ -7,4 +7,5 @@ {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055738736,"id":"50|od______1582::6e7a9b21a2feef45673890432af34244","originalId":["od______1582::6e7a9b21a2feef45673890432af34244"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:53:57.871Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:403174","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Delenne, Jean-Yves","name":"Jean-Yves","surname":"Delenne","rank":1,"pid":null,"affiliation":null},{"fullname":"Richefeu, Vincent","name":"Vincent","surname":"Richefeu","rank":2,"pid":null,"affiliation":null},{"fullname":"Frank, Xavier","name":"Xavier","surname":"Frank","rank":3,"pid":null,"affiliation":null},{"fullname":"Radjaï, Farhang","name":"Farhang","surname":"Radjaï","rank":4,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Modélisation et simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Modeling and Simulation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"structure granulaire","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"algorithme","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"simulation numérique","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de gaz","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"flux de liquide","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Flowbox","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"The code FLOWbox is dedicated to the computation of flow through porous and granular materials.\nFLOWbox is based on an optimized 3D Lattice Boltzmann algorithm for the computation of liquid or gas flows directly at the scale of heterogeneities. FLOWbox intends to be a powerful and versatile software able to operate on highly detailed microstructures in a systematic fashion. These microstructures can be generated either from numerical simulation or from tomography.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/403174"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2015-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055741711,"id":"50|od______1582::71dd00de0e70764d2800a766c0b165db","originalId":["od______1582::71dd00de0e70764d2800a766c0b165db"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:35:31.489Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:442564","datestamp":"2018-11-12T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Bitteur, Sylvaine","name":"Sylvaine","surname":"Bitteur","rank":1,"pid":null,"affiliation":null},{"fullname":"Lortal, Sylvie","name":"Sylvie","surname":"Lortal","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[],"title":[{"value":"Charte graphique et site web MILK International Symposium","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-nd/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/442564"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2014-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055745351,"id":"50|od______1582::764d9ba73f2f3e794e00a80b075330ef","originalId":["od______1582::764d9ba73f2f3e794e00a80b075330ef"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:41:37.345Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407117","datestamp":"2018-05-28T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Favre, Colette","name":"Colette","surname":"Favre","rank":1,"pid":null,"affiliation":null},{"fullname":"Grel, Audrey","name":"Audrey","surname":"Grel","rank":2,"pid":null,"affiliation":null},{"fullname":"Granier, Evelyne","name":"Evelyne","surname":"Granier","rank":3,"pid":null,"affiliation":null},{"fullname":"Cosserat-Mangeot, Régine","name":"Régine","surname":"Cosserat-Mangeot","rank":4,"pid":null,"affiliation":null},{"fullname":"Bachacou, Jean","name":"Jean","surname":"Bachacou","rank":5,"pid":null,"affiliation":null},{"fullname":"LEROY, Nathalie","name":"Nathalie","surname":"Leroy","rank":6,"pid":null,"affiliation":null},{"fullname":"Dupouey, Jean-Luc","name":"Jean-Luc","surname":"Dupouey","rank":7,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"fra/fre","classname":"French","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"digitalisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"carte des sols","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"géoréférencement","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"vectorisation","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"France","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"usage du sol","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Digitalisation des cartes anciennes : Manuel pour la vectorisation de l'usage des sols et le géo-référencement des minutes 1:40 000 de la carte d' Etat-Major","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407117"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} -{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} \ No newline at end of file +{"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055748883,"id":"50|od______1582::7a6ace3d7ad42ac813e4955f66a44435","originalId":["od______1582::7a6ace3d7ad42ac813e4955f66a44435"],"collectedfrom":[{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null}],"pid":[],"dateofcollection":"2019-01-24T16:45:07Z","dateoftransformation":"","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2019-01-23T18:52:22.609Z","altered":true,"baseURL":"http://oai.prodinra.inra.fr/ft","identifier":"oai:prodinra.inra.fr:407676","datestamp":"2018-03-19T00:00:00Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Desjeux, Yann","name":"Yann","surname":"Desjeux","rank":1,"pid":null,"affiliation":null},{"fullname":"Latruffe, Laure","name":"Laure","surname":"Latruffe","rank":2,"pid":null,"affiliation":null}],"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Stochastic Frontier Analysis (SFA);R; R package","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"sfadv: Advanced Methods for Stochastic Frontier Analysis. R package version 1.0.1","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Stochastic frontier analysis with advanced methods.\nIn particular, it applies the approach proposed by Latruffe et al. (2017) to estimate a stochastic frontier with technical inefficiency effects when one input is endogenous.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"https://creativecommons.org/licenses/by-sa/3.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"url":["http://prodinra.inra.fr/record/407676"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::1582","value":"ProdInra","dataInfo":null},"dateofacceptance":{"value":"2017-01-01","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"documentationUrl":[],"license":[],"codeRepositoryUrl":null,"programmingLanguage":null} +{"author":[{"affiliation":[],"fullname":"McNab, Andrew","name":"Andrew","pid":[],"rank":1,"surname":"McNab"}],"bestaccessright":{"classid":"OPEN SOURCE","classname":"Open Source","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|orp_________::9b49c76cf40a93f89944889678b741f9","value":"EGI Applications Database"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:datasource","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.8"}],"id":"egi"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2015-11-01"},"dateofcollection":"2022-02-07T02:05:48.372Z","dateoftransformation":"","description":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Vcycle can manage VMs on cloud services supporting the OpenStack, OCCI, DBCE, or MS Azure APIs."}],"documentationUrl":[],"externalReference":[],"extraInfo":[],"format":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Python"}],"fulltext":[],"id":"50|____EGIAppDB::45398bb1126be97bd34a49670ac07f98","instance":[{"accessright":{"classid":"OPEN SOURCE","classname":"Open Source","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"alternateIdentifier":[],"collectedfrom":{"key":"10|orp_________::9b49c76cf40a93f89944889678b741f9","value":"EGI Applications Database"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2015-11-01"},"hostedby":{"key":"10|orp_________::9b49c76cf40a93f89944889678b741f9","value":"EGI Applications Database"},"instancetype":{"classid":"0029","classname":"Software","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"license":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"http://opensource.org/licenses/BSD-2-Clause"},"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"handle","classname":"Handle","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"21.15106/df92ad36-eb56-4e77-9a58-a9194cb72f69"}],"refereed":{"classid":"0000","classname":"UNKNOWN","schemeid":"dnet:review_levels","schemename":"dnet:review_levels"},"url":["http://appdb.egi.eu/?p=L2FwcHMvZGV0YWlscz9pZD05Mjk=","http://www.gridpp.ac.uk/vcycle/","https://appdb.egi.eu/store/software/vcycle"]}],"language":{"classid":"eng","classname":"English","schemeid":"dnet:languages","schemename":"dnet:languages"},"lastupdatetimestamp":1650576625777,"license":[],"measures":[],"oaiprovenance":{"originDescription":{"altered":true,"baseURL":"http%3A%2F%2Foai.appdb.egi.eu%2Foai%2F","datestamp":"2021-03-25T14:30:41Z","harvestDate":"2022-02-07T02:05:48.372Z","identifier":"oai:appdb.egi.eu:df92ad36-eb56-4e77-9a58-a9194cb72f69","metadataNamespace":""}},"originalId":["oai:appdb.egi.eu:df92ad36-eb56-4e77-9a58-a9194cb72f69","50|____EGIAppDB::45398bb1126be97bd34a49670ac07f98"],"pid":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"handle","classname":"Handle","schemeid":"dnet:pid_types","schemename":"dnet:pid_types"},"value":"21.15106/df92ad36-eb56-4e77-9a58-a9194cb72f69"}],"programmingLanguage":{"classid":"Python","classname":"Python","schemeid":"","schemename":""},"publisher":{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"EGI Applications Database"},"relevantdate":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"issued","classname":"issued","schemeid":"dnet:dataCite_date","schemename":"dnet:dataCite_date"},"value":"2015-11-01"}],"resourcetype":{"classid":"UNKNOWN","classname":"UNKNOWN","schemeid":"dnet:dataCite_resource","schemename":"dnet:dataCite_resource"},"resulttype":{"classid":"software","classname":"software","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"source":[],"subject":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"keyword","classname":"keyword","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Tools"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"iis::document_classes","inferred":true,"invisible":false,"provenanceaction":{"classid":"iis","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.7713"},"qualifier":{"classid":"ACM","classname":"ACM Computing Classification System","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"Software_PROGRAMMINGTECHNIQUES"},{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"iis::document_classes","inferred":true,"invisible":false,"provenanceaction":{"classid":"iis","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.7713"},"qualifier":{"classid":"ACM","classname":"ACM Computing Classification System","schemeid":"dnet:subject_classification_typologies","schemename":"dnet:subject_classification_typologies"},"value":"ComputerApplications_COMPUTERSINOTHERSYSTEMS"}],"title":[{"dataInfo":{"deletedbyinference":false,"inferenceprovenance":"","inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:datasetarchive","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"value":"Vcycle"}]} \ No newline at end of file diff --git a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json index b441bc423..4245a28b9 100644 --- a/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json +++ b/dhp-workflows/dhp-enrichment/src/test/resources/eu/dnetlib/dhp/eosctag/twitter/dataset/dataset_10.json @@ -8,3 +8,4 @@ {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055870750,"id":"50|od______3989::7fcbe3a03280663cddebfd3cb9203177","originalId":["od______3989::7fcbe3a03280663cddebfd3cb9203177"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:25.652Z","dateoftransformation":"2020-03-03T13:06:55.95Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:25.652Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/796","datestamp":"2018-11-05T13:36:54Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Redes sociales","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"III Liga de Debate CICAE","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Instantaneidad","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Información periodística","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Fake news","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Jorge Gallardo - Liga de Debate CICAE","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Jorge Gallardo, profesor de Derecho en la Universidad Camilo José Cela (UCJC), Doctor en Comunicación Audiovisual y MBA en Empresas Audiovisuales. Subdirector de Espejo Público en Antena 3 Noticias. \n\nEn esta ocasión, Jorge Gallardo habla sobre las redes sociales, cómo han transformado la manera en la que nos comunicamos y nos informamos. \n\nIII Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/\n\nLa Universidad Camilo José Cela (UCJC) y la Asociación de Colegios Privados e Independientes –Círculo de Calidad Educativa (CICAE) – organizan la tercera edición de esta gran liga de debate académico. El formato es al estilo inglés, similar al de la Oxford Union, donde algunos jóvenes se reunían a debatir sobre temas de la más candente actualidad y polemizaban con la intención de formarse en tan valoradas habilidades.\n\nLa Liga de Debate CICAE-UCJC es una ocasión única para los alumnos de ponerse en contacto con herramientas tan útiles como la oratoria y la comunicación efectiva. Pero, sobre todo, una oportunidad de fomentar el pensamiento crítico y la socialización entre alumnos con espíritu emprendedor. La Liga de Debate CICAE - Universidad Camilo José Cela se diferencia del resto de torneos en que potenciamos que sea eminentemente formativa. Alumnos y profesores reciben formación en comunicación, oratoria y debate por parte de alguno de los expertos en debate españoles más reconocidos en la escena internacional.\n\nDatos de la III Liga de Debate CICAE - UCJC http://ligacicae.ucjc.edu/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/796"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-23","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872001,"id":"50|od______3989::d791339867bec6d3eb2104deeb4e4961","originalId":["od______3989::d791339867bec6d3eb2104deeb4e4961"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.586Z","dateoftransformation":"2020-03-03T13:06:57.721Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.586Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/645","datestamp":"2018-04-12T07:59:27Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Transferencia de Conocimiento e Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Innovación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Investigación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciencia","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Tecnología","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"UCJC Open Science Day 2018","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"El UCJC Open Science Day tiene como objetivo mostrar las actividades de investigación llevadas a cabo por investigadores de la Universidad Camilo José Cela (UCJC) a todos los miembros de la UCJC.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/645"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-04-10","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} {"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}},"lastupdatetimestamp":1585055872022,"id":"50|od______3989::d90d3a1f64ad264b5ebed8a35b280343","originalId":["od______3989::d90d3a1f64ad264b5ebed8a35b280343"],"collectedfrom":[{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null}],"pid":[],"dateofcollection":"2020-03-03T13:05:34.912Z","dateoftransformation":"2020-03-03T13:06:57.747Z","extraInfo":[],"oaiprovenance":{"originDescription":{"harvestDate":"2020-03-03T13:05:34.912Z","altered":true,"baseURL":"http%3A%2F%2Frepositorio.ucjc.edu%2Foai%2Frequest","identifier":"oai:repositorio.ucjc.edu:20.500.12020/795","datestamp":"2018-11-06T15:43:10Z","metadataNamespace":"http://www.openarchives.org/OAI/2.0/oai_dc/"}},"author":[{"fullname":"Universidad Camilo José Cela, Vicerrectorado de Innovación","name":"Vicerrectorado Innovación","surname":"Universidad Camilo José Cela","rank":1,"pid":null,"affiliation":null}],"resulttype":{"classid":"dataset","classname":"dataset","schemeid":"dnet:result_typologies","schemename":"dnet:result_typologies"},"language":{"classid":"esl/spa","classname":"Spanish","schemeid":"dnet:languages","schemename":"dnet:languages"},"country":[],"subject":[{"value":"Ciencias de la Comunicación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Unión Europea","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Desinformación","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Política","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Periodismo","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Ciudadanos europeos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Democracias","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Estado de derecho","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"Derechos humanos","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},{"value":"5910.02 Medios de Comunicación de Masas","qualifier":{"classid":"","classname":"","schemeid":"","schemename":""},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"title":[{"value":"Ramón Luis Varcárcel - La Unión Europea ante el reto de la desinformación","qualifier":{"classid":"main title","classname":"main title","schemeid":"dnet:dataCite_title","schemename":"dnet:dataCite_title"},"dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"relevantdate":[],"description":[{"value":"Conferencia de Ramón Luis Valcárcel, vicepresidente del Parlamento Europeo, en el Campus de Almagro de la Universidad Camilo José Cela (UCJC) bajo el título \"La Unión Europea ante el reto de la desinformación\", en la que ha alertado sobre el alcance de la desinformación en las democracias y sobre cómo pone en peligro los derechos de los ciudadanos europeos. También ha participado el rector de la UCJC, Samuel Martín-Barbero.","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}}],"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"publisher":null,"embargoenddate":null,"source":[],"fulltext":[],"format":[],"contributor":[],"resourcetype":null,"coverage":[],"bestaccessright":null,"context":[],"externalReference":[],"instance":[{"license":{"value":"http://creativecommons.org/licenses/by-nc-nd/4.0/","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"accessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"instancetype":{"classid":"0024","classname":"Film","schemeid":"dnet:publication_resource","schemename":"dnet:publication_resource"},"hostedby":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"url":["http://hdl.handle.net/20.500.12020/795"],"distributionlocation":"","collectedfrom":{"key":"opendoar____::3989","value":"Depósito Digital e-UCJC","dataInfo":null},"dateofacceptance":{"value":"2018-10-11","dataInfo":{"invisible":false,"inferred":false,"deletedbyinference":false,"trust":"0.9","inferenceprovenance":"","provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"sysimport:crosswalk:repository","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"}}},"processingchargeamount":null,"processingchargecurrency":null,"refereed":null}],"storagedate":null,"device":null,"size":null,"version":null,"lastmetadataupdate":null,"metadataversionnumber":null,"geolocation":[]} +{"author":[{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"DeVerna, Matthew","name":"Matthew","pid":[],"rank":1,"surname":"DeVerna"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Politecnico di Milano"}],"fullname":"Pierri, Francesco","name":"Francesco","pid":[],"rank":2,"surname":"Pierri"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Truong, Bao","name":"Bao","pid":[],"rank":3,"surname":"Truong"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Bollenbacher, John","name":"John","pid":[],"rank":4,"surname":"Bollenbacher"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Axelrod, David","name":"David","pid":[],"rank":5,"surname":"Axelrod"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"University of Manchester"}],"fullname":"Loynes, Nikals","name":"Nikals","pid":[],"rank":6,"surname":"Loynes"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Torres-Lugo, Christopher","name":"Christopher","pid":[],"rank":7,"surname":"Torres-Lugo"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Yang, Kai-Cheng","name":"Kai-Cheng","pid":[],"rank":8,"surname":"Yang"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Menczer, Filippo","name":"Filippo","pid":[],"rank":9,"surname":"Menczer"},{"affiliation":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"Indiana University"}],"fullname":"Bryden, John","name":"John","pid":[],"rank":10,"surname":"Bryden"}],"bestaccessright":{"classid":"OPEN","classname":"Open Access","schemeid":"dnet:access_modes","schemename":"dnet:access_modes"},"collectedfrom":[{"key":"10|opendoar____::358aee4cc897452c00244351e4d91f69","value":"ZENODO"}],"context":[{"dataInfo":[{"deletedbyinference":false,"inferenceprovenance":"bulktagging","inferred":true,"invisible":false,"provenanceaction":{"classid":"community:subject","classname":"Inferred by OpenAIRE","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.8"}],"id":"covid-19"}],"contributor":[],"country":[],"coverage":[],"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"dateofacceptance":{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"2021-02-09"},"dateofcollection":"2022-01-31T05:53:27+0000","dateoftransformation":"2022-04-03T01:10:46.496Z","description":[{"dataInfo":{"deletedbyinference":false,"inferred":false,"invisible":false,"provenanceaction":{"classid":"sysimport:crosswalk:repository","classname":"Harvested","schemeid":"dnet:provenanceActions","schemename":"dnet:provenanceActions"},"trust":"0.9"},"value":"