forked from D-Net/dnet-hadoop
Protobuf to internal graph model, early steps
This commit is contained in:
parent
d38aeb8c6e
commit
79c4f1bbd8
|
@ -1,37 +1,45 @@
|
||||||
package eu.dnetlib.dhp.graph;
|
package eu.dnetlib.dhp.graph;
|
||||||
|
|
||||||
|
|
||||||
import com.googlecode.protobuf.format.JsonFormat;
|
|
||||||
import eu.dnetlib.data.proto.KindProtos;
|
import eu.dnetlib.data.proto.KindProtos;
|
||||||
import eu.dnetlib.data.proto.OafProtos;
|
import eu.dnetlib.data.proto.OafProtos;
|
||||||
import eu.dnetlib.dhp.schema.oaf.*;
|
import eu.dnetlib.dhp.schema.oaf.*;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static eu.dnetlib.dhp.graph.ProtoUtils.mapKV;
|
||||||
|
|
||||||
public class ProtoConverter implements Serializable {
|
public class ProtoConverter implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
public static Oaf convert(String s) {
|
public static Oaf convert(String s) {
|
||||||
try {
|
try {
|
||||||
final OafProtos.Oaf.Builder builder = OafProtos.Oaf.newBuilder();
|
OafProtos.Oaf oaf = ProtoUtils.parse(s);
|
||||||
JsonFormat.merge(s, builder);
|
|
||||||
|
|
||||||
if (builder.getKind() == KindProtos.Kind.entity)
|
if (oaf.getKind() == KindProtos.Kind.entity)
|
||||||
return convertEntity(builder);
|
return convertEntity(oaf);
|
||||||
else {
|
else {
|
||||||
return convertRelation(builder);
|
return convertRelation(oaf);
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Relation convertRelation(OafProtos.Oaf.Builder oaf) {
|
private static Relation convertRelation(OafProtos.Oaf oaf) {
|
||||||
return new Relation();
|
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()) {
|
switch (oaf.getEntity().getType()) {
|
||||||
case result:
|
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();
|
return new Organization();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Datasource convertDataSource(OafProtos.Oaf.Builder oaf) {
|
private static Datasource convertDataSource(OafProtos.Oaf oaf) {
|
||||||
return new Datasource();
|
return new Datasource();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Project convertProject(OafProtos.Oaf.Builder oaf) {
|
private static Project convertProject(OafProtos.Oaf oaf) {
|
||||||
return new Project();
|
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()) {
|
switch (oaf.getEntity().getResult().getMetadata().getResulttype().getClassid()) {
|
||||||
case "dataset":
|
case "dataset":
|
||||||
return createDataset(oaf);
|
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();
|
return new Software();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static OtherResearchProducts createORP(OafProtos.Oaf.Builder oaf) {
|
private static OtherResearchProducts createORP(OafProtos.Oaf oaf) {
|
||||||
return new OtherResearchProducts();
|
return new OtherResearchProducts();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Publication createPublication(OafProtos.Oaf.Builder oaf) {
|
private static Publication createPublication(OafProtos.Oaf oaf) {
|
||||||
return new Publication();
|
return new Publication();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Dataset createDataset(OafProtos.Oaf.Builder oaf) {
|
private static Dataset createDataset(OafProtos.Oaf oaf) {
|
||||||
return new Dataset();
|
return new Dataset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,53 @@
|
||||||
package eu.dnetlib.dhp.graph;
|
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 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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue