From d38aeb8c6e93b964b8114c1973b3b0e386285aa0 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 24 Oct 2019 16:55:38 +0200 Subject: [PATCH 1/2] DataInfo.provenanceaction not repeatable, fluent setters --- .../eu/dnetlib/dhp/schema/oaf/DataInfo.java | 22 ++++++++++++------- .../eu/dnetlib/dhp/schema/oaf/KeyValue.java | 9 +++++--- .../eu/dnetlib/dhp/schema/oaf/Qualifier.java | 15 ++++++++----- .../eu/dnetlib/dhp/schema/oaf/Relation.java | 18 ++++++++++----- .../dhp/schema/oaf/StructuredProperty.java | 10 +++++---- .../java/eu/dnetlib/dhp/graph/ProtoUtils.java | 4 ++++ 6 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java index 01a0396a8..1e3e451fc 100644 --- a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java +++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java @@ -10,54 +10,60 @@ public class DataInfo implements Serializable { private Boolean deletedbyinference; private String trust; private String inferenceprovenance; - private List provenanceaction; + private Qualifier provenanceaction; public Boolean getInvisible() { return invisible; } - public void setInvisible(Boolean invisible) { + public DataInfo setInvisible(Boolean invisible) { this.invisible = invisible; + return this; } public Boolean getInferred() { return inferred; } - public void setInferred(Boolean inferred) { + public DataInfo setInferred(Boolean inferred) { this.inferred = inferred; + return this; } public Boolean getDeletedbyinference() { return deletedbyinference; } - public void setDeletedbyinference(Boolean deletedbyinference) { + public DataInfo setDeletedbyinference(Boolean deletedbyinference) { this.deletedbyinference = deletedbyinference; + return this; } public String getTrust() { return trust; } - public void setTrust(String trust) { + public DataInfo setTrust(String trust) { this.trust = trust; + return this; } public String getInferenceprovenance() { return inferenceprovenance; } - public void setInferenceprovenance(String inferenceprovenance) { + public DataInfo setInferenceprovenance(String inferenceprovenance) { this.inferenceprovenance = inferenceprovenance; + return this; } - public List getProvenanceaction() { + public Qualifier getProvenanceaction() { return provenanceaction; } - public void setProvenanceaction(List provenanceaction) { + public DataInfo setProvenanceaction(Qualifier provenanceaction) { this.provenanceaction = provenanceaction; + return this; } } diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java index 1c4c7e6ef..efdeceef1 100644 --- a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -14,23 +14,26 @@ public class KeyValue implements Serializable { return key; } - public void setKey(String key) { + public KeyValue setKey(String key) { this.key = key; + return this; } public String getValue() { return value; } - public void setValue(String value) { + public KeyValue setValue(String value) { this.value = value; + return this; } public DataInfo getDataInfo() { return dataInfo; } - public void setDataInfo(DataInfo dataInfo) { + public KeyValue setDataInfo(DataInfo dataInfo) { this.dataInfo = dataInfo; + return this; } } diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java index 0d917d50e..b586855a1 100644 --- a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java +++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java @@ -15,39 +15,44 @@ public class Qualifier implements Serializable { return classid; } - public void setClassid(String classid) { + public Qualifier setClassid(String classid) { this.classid = classid; + return this; } public String getClassname() { return classname; } - public void setClassname(String classname) { + public Qualifier setClassname(String classname) { this.classname = classname; + return this; } public String getSchemeid() { return schemeid; } - public void setSchemeid(String schemeid) { + public Qualifier setSchemeid(String schemeid) { this.schemeid = schemeid; + return this; } public String getSchemename() { return schemename; } - public void setSchemename(String schemename) { + public Qualifier setSchemename(String schemename) { this.schemename = schemename; + return this; } public DataInfo getDataInfo() { return dataInfo; } - public void setDataInfo(DataInfo dataInfo) { + public Qualifier setDataInfo(DataInfo dataInfo) { this.dataInfo = dataInfo; + return this; } } diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java index 5cf0883be..db8807e21 100644 --- a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java +++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java @@ -20,47 +20,53 @@ public class Relation extends Oaf { return relType; } - public void setRelType(String relType) { + public Relation setRelType(String relType) { this.relType = relType; + return this; } public String getSubRelType() { return subRelType; } - public void setSubRelType(String subRelType) { + public Relation setSubRelType(String subRelType) { this.subRelType = subRelType; + return this; } public String getRelClass() { return relClass; } - public void setRelClass(String relClass) { + public Relation setRelClass(String relClass) { this.relClass = relClass; + return this; } public String getSource() { return source; } - public void setSource(String source) { + public Relation setSource(String source) { this.source = source; + return this; } public String getTarget() { return target; } - public void setTarget(String target) { + public Relation setTarget(String target) { this.target = target; + return this; } public List getCollectedFrom() { return collectedFrom; } - public void setCollectedFrom(List collectedFrom) { + public Relation setCollectedFrom(List collectedFrom) { this.collectedFrom = collectedFrom; + return this; } } diff --git a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java index 8a39d8d97..fc312e336 100644 --- a/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java +++ b/dhp-schemas/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java @@ -10,28 +10,30 @@ public class StructuredProperty implements Serializable { private DataInfo dataInfo; - public String getValue() { return value; } - public void setValue(String value) { + public StructuredProperty setValue(String value) { this.value = value; + return this; } public Qualifier getQualifier() { return qualifier; } - public void setQualifier(Qualifier qualifier) { + public StructuredProperty setQualifier(Qualifier qualifier) { this.qualifier = qualifier; + return this; } public DataInfo getDataInfo() { return dataInfo; } - public void setDataInfo(DataInfo dataInfo) { + public StructuredProperty setDataInfo(DataInfo dataInfo) { this.dataInfo = dataInfo; + return this; } } diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java new file mode 100644 index 000000000..b0f82ab00 --- /dev/null +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java @@ -0,0 +1,4 @@ +package eu.dnetlib.dhp.graph; + +public class ProtoUtils { +} From 79c4f1bbd853dce7d0009b6a369a7dacab3ae1f8 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 24 Oct 2019 16:56:13 +0200 Subject: [PATCH 2/2] Protobuf to internal graph model, early steps --- .../eu/dnetlib/dhp/graph/ProtoConverter.java | 46 ++++++++++------- .../java/eu/dnetlib/dhp/graph/ProtoUtils.java | 49 +++++++++++++++++++ 2 files changed, 76 insertions(+), 19 deletions(-) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoConverter.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoConverter.java index 9f22d7875..cc5ba181c 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoConverter.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoConverter.java @@ -1,37 +1,45 @@ package eu.dnetlib.dhp.graph; - -import com.googlecode.protobuf.format.JsonFormat; import eu.dnetlib.data.proto.KindProtos; import eu.dnetlib.data.proto.OafProtos; import eu.dnetlib.dhp.schema.oaf.*; import java.io.Serializable; +import java.util.stream.Collectors; +import static eu.dnetlib.dhp.graph.ProtoUtils.mapKV; public class ProtoConverter implements Serializable { - public static Oaf convert(String s) { try { - final OafProtos.Oaf.Builder builder = OafProtos.Oaf.newBuilder(); - JsonFormat.merge(s, builder); + OafProtos.Oaf oaf = ProtoUtils.parse(s); - if (builder.getKind() == KindProtos.Kind.entity) - return convertEntity(builder); + if (oaf.getKind() == KindProtos.Kind.entity) + return convertEntity(oaf); else { - return convertRelation(builder); + return convertRelation(oaf); } } catch (Throwable e) { throw new RuntimeException(e); } } - private static Relation convertRelation(OafProtos.Oaf.Builder oaf) { - return new Relation(); + private static Relation convertRelation(OafProtos.Oaf oaf) { + final Relation rel = new Relation(); + final OafProtos.OafRel r = oaf.getRel(); + return rel + .setSource(r.getSource()) + .setTarget(r.getTarget()) + .setRelType(r.getRelType().toString()) + .setSubRelType(r.getSubRelType().toString()) + .setRelClass(r.getRelClass()) + .setCollectedFrom(r.getCollectedfromList().stream() + .map(kv -> mapKV(kv)) + .collect(Collectors.toList())); } - private static OafEntity convertEntity(OafProtos.Oaf.Builder oaf) { + private static OafEntity convertEntity(OafProtos.Oaf oaf) { switch (oaf.getEntity().getType()) { case result: @@ -47,19 +55,19 @@ public class ProtoConverter implements Serializable { } } - private static Organization convertOrganization(OafProtos.Oaf.Builder oaf) { + private static Organization convertOrganization(OafProtos.Oaf oaf) { return new Organization(); } - private static Datasource convertDataSource(OafProtos.Oaf.Builder oaf) { + private static Datasource convertDataSource(OafProtos.Oaf oaf) { return new Datasource(); } - private static Project convertProject(OafProtos.Oaf.Builder oaf) { + private static Project convertProject(OafProtos.Oaf oaf) { return new Project(); } - private static Result convertResult(OafProtos.Oaf.Builder oaf) { + private static Result convertResult(OafProtos.Oaf oaf) { switch (oaf.getEntity().getResult().getMetadata().getResulttype().getClassid()) { case "dataset": return createDataset(oaf); @@ -74,19 +82,19 @@ public class ProtoConverter implements Serializable { } } - private static Software createSoftware(OafProtos.Oaf.Builder oaf) { + private static Software createSoftware(OafProtos.Oaf oaf) { return new Software(); } - private static OtherResearchProducts createORP(OafProtos.Oaf.Builder oaf) { + private static OtherResearchProducts createORP(OafProtos.Oaf oaf) { return new OtherResearchProducts(); } - private static Publication createPublication(OafProtos.Oaf.Builder oaf) { + private static Publication createPublication(OafProtos.Oaf oaf) { return new Publication(); } - private static Dataset createDataset(OafProtos.Oaf.Builder oaf) { + private static Dataset createDataset(OafProtos.Oaf oaf) { return new Dataset(); } } diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java index b0f82ab00..0c8ffda30 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/graph/ProtoUtils.java @@ -1,4 +1,53 @@ package eu.dnetlib.dhp.graph; +import com.googlecode.protobuf.format.JsonFormat; +import eu.dnetlib.data.proto.FieldTypeProtos; +import eu.dnetlib.data.proto.OafProtos; +import eu.dnetlib.dhp.schema.oaf.DataInfo; +import eu.dnetlib.dhp.schema.oaf.KeyValue; +import eu.dnetlib.dhp.schema.oaf.Qualifier; +import eu.dnetlib.dhp.schema.oaf.StructuredProperty; + +import java.util.List; + public class ProtoUtils { + + public static OafProtos.Oaf parse(String json) throws JsonFormat.ParseException { + final OafProtos.Oaf.Builder builder = OafProtos.Oaf.newBuilder(); + JsonFormat.merge(json, builder); + return builder.build(); + } + + public static KeyValue mapKV(FieldTypeProtos.KeyValue kv) { + return new KeyValue() + .setKey(kv.getKey()) + .setValue(kv.getValue()) + .setDataInfo(mapDataInfo(kv.getDataInfo())); + } + + public static DataInfo mapDataInfo(FieldTypeProtos.DataInfo d) { + return new DataInfo() + .setDeletedbyinference(d.getDeletedbyinference()) + .setInferenceprovenance(d.getInferenceprovenance()) + .setInferred(d.getInferred()) + .setInvisible(d.getInvisible()) + .setProvenanceaction(mapQualifier(d.getProvenanceaction())); + } + + public static Qualifier mapQualifier(FieldTypeProtos.Qualifier q) { + return new Qualifier() + .setClassid(q.getClassid()) + .setClassname(q.getClassname()) + .setSchemeid(q.getSchemeid()) + .setSchemename(q.getSchemename()) + .setDataInfo(q.hasDataInfo() ? mapDataInfo(q.getDataInfo()) : null); + } + + public static StructuredProperty mapStructuredProperty(FieldTypeProtos.StructuredProperty sp) { + return new StructuredProperty() + .setValue(sp.getValue()) + .setQualifier(mapQualifier(sp.getQualifier())) + .setDataInfo(sp.hasDataInfo() ? mapDataInfo(sp.getDataInfo()) : null); + } + }