From f8f4b9a018bd6a133ca49029d2ee03d03aa191cf Mon Sep 17 00:00:00 2001 From: Sandro La Bruzzo Date: Fri, 28 Apr 2023 11:44:28 +0200 Subject: [PATCH] -Renamed RelationInverse into RelationLabel. -Removed findRelation from ModelSupport -code formatted --- .../dhp/common/api/ZenodoAPIClient.java | 38 +- .../dhp/schema/common/ModelConstants.java | 1 - .../dhp/schema/oaf/common/ModelSupport.java | 44 +- .../schema/oaf/common/RelationInverse.java | 46 -- .../dhp/schema/oaf/common/RelationLabel.java | 33 + .../dhp/schema/oaf/utils/OafMapperUtils.java | 778 +++++++++--------- .../eu/dnetlib/dhp/schema/sx/OafUtils.scala | 59 -- .../scholexplorer/relation/RelInfo.java | 25 - .../relation/RelationMapper.java | 20 - .../schema/oaf/common/ModelSupportTest.java | 11 - .../relation/RelationMapperTest.java | 16 - .../dhp/datacite/DataciteModelConstants.scala | 11 +- .../DataciteToOAFTransformation.scala | 44 +- .../dhp/blacklist/ReadBlacklistFromDB.java | 22 +- .../dhp/blacklist/BlacklistRelationTest.java | 4 +- .../doiboost/SparkGenerateDoiBoost.scala | 6 +- .../dhp/oa/graph/raw/OdfToOafMapper.java | 4 +- 17 files changed, 502 insertions(+), 660 deletions(-) delete mode 100644 dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationInverse.java create mode 100644 dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationLabel.java delete mode 100644 dhp-common/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala delete mode 100644 dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelInfo.java delete mode 100644 dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelationMapper.java delete mode 100644 dhp-common/src/test/java/eu/dnetlib/scholexplorer/relation/RelationMapperTest.java diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/common/api/ZenodoAPIClient.java b/dhp-common/src/main/java/eu/dnetlib/dhp/common/api/ZenodoAPIClient.java index 2aeccfcf2..544da78f5 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/common/api/ZenodoAPIClient.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/common/api/ZenodoAPIClient.java @@ -9,13 +9,13 @@ import java.util.concurrent.TimeUnit; import org.apache.http.HttpHeaders; import org.apache.http.entity.ContentType; +import org.jetbrains.annotations.NotNull; import com.google.gson.Gson; import eu.dnetlib.dhp.common.api.zenodo.ZenodoModel; import eu.dnetlib.dhp.common.api.zenodo.ZenodoModelList; import okhttp3.*; -import org.jetbrains.annotations.NotNull; public class ZenodoAPIClient implements Serializable { @@ -80,7 +80,7 @@ public class ZenodoAPIClient implements Serializable { int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + body); ZenodoModel newSubmission = new Gson().fromJson(body, ZenodoModel.class); @@ -115,7 +115,7 @@ public class ZenodoAPIClient implements Serializable { } int responseCode = conn.getResponseCode(); - if(! checkOKStatus(responseCode)){ + if (!checkOKStatus(responseCode)) { throw new IOException("Unexpected code " + responseCode + getBody(conn)); } @@ -126,7 +126,7 @@ public class ZenodoAPIClient implements Serializable { private String getBody(HttpURLConnection conn) throws IOException { String body = "{}"; try (BufferedReader br = new BufferedReader( - new InputStreamReader(conn.getInputStream(), "utf-8"))) { + new InputStreamReader(conn.getInputStream(), "utf-8"))) { StringBuilder response = new StringBuilder(); String responseLine = null; while ((responseLine = br.readLine()) != null) { @@ -155,7 +155,6 @@ public class ZenodoAPIClient implements Serializable { conn.setDoOutput(true); conn.setRequestMethod("PUT"); - try (OutputStream os = conn.getOutputStream()) { byte[] input = metadata.getBytes("utf-8"); os.write(input, 0, input.length); @@ -164,19 +163,18 @@ public class ZenodoAPIClient implements Serializable { final int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + getBody(conn)); return responseCode; - } - private boolean checkOKStatus(int responseCode) { + private boolean checkOKStatus(int responseCode) { - if(HttpURLConnection.HTTP_OK != responseCode || - HttpURLConnection.HTTP_CREATED != responseCode) - return true ; + if (HttpURLConnection.HTTP_OK != responseCode || + HttpURLConnection.HTTP_CREATED != responseCode) + return true; return false; } @@ -233,7 +231,6 @@ public class ZenodoAPIClient implements Serializable { conn.setDoOutput(true); conn.setRequestMethod("POST"); - try (OutputStream os = conn.getOutputStream()) { byte[] input = json.getBytes("utf-8"); os.write(input, 0, input.length); @@ -245,7 +242,7 @@ public class ZenodoAPIClient implements Serializable { int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + body); ZenodoModel zenodoModel = new Gson().fromJson(body, ZenodoModel.class); @@ -290,13 +287,12 @@ public class ZenodoAPIClient implements Serializable { int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + body); ZenodoModel zenodoModel = new Gson().fromJson(body, ZenodoModel.class); bucket = zenodoModel.getLinks().getBucket(); - return responseCode; } @@ -331,22 +327,16 @@ public class ZenodoAPIClient implements Serializable { conn.setDoOutput(true); conn.setRequestMethod("GET"); - - String body = getBody(conn); int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + body); - - return body; - - } private String getBucket(String inputUurl) throws IOException { @@ -363,15 +353,13 @@ public class ZenodoAPIClient implements Serializable { int responseCode = conn.getResponseCode(); conn.disconnect(); - if(!checkOKStatus(responseCode)) + if (!checkOKStatus(responseCode)) throw new IOException("Unexpected code " + responseCode + body); ZenodoModel zenodoModel = new Gson().fromJson(body, ZenodoModel.class); return zenodoModel.getLinks().getBucket(); - - } } diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java index f65685487..9ef2a23bd 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/common/ModelConstants.java @@ -86,7 +86,6 @@ public class ModelConstants { public static final Qualifier PROVENANCE_ACTION_SET_QUALIFIER = qualifier( SYSIMPORT_ACTIONSET, SYSIMPORT_ACTIONSET, DNET_PROVENANCE_ACTIONS); - public static final String UNKNOWN = "UNKNOWN"; public static final String NOT_AVAILABLE = "not available"; diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupport.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupport.java index b4d9683f5..2ce34f147 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupport.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupport.java @@ -2,16 +2,12 @@ package eu.dnetlib.dhp.schema.oaf.common; import static com.google.common.base.Preconditions.checkArgument; -import static eu.dnetlib.dhp.schema.common.ModelConstants.*; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.ParseException; -import java.util.Date; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.function.Function; import org.apache.commons.codec.binary.Hex; @@ -96,26 +92,6 @@ public class ModelSupport { idPrefixEntity.put("50", "result"); } - private static void set(Map relationInverseMap, String relType, String subRelType, - String relClass, String inverseRelClass) { - relationInverseMap - .put( - rel(relType, subRelType, relClass), new RelationInverse() - .setInverseRelClass(inverseRelClass) - .setRelClass(relClass) - .setRelType(relType) - .setSubReltype(subRelType)); - if (!relClass.equals(inverseRelClass)) { - relationInverseMap - .put( - rel(relType, subRelType, inverseRelClass), new RelationInverse() - .setInverseRelClass(relClass) - .setRelClass(inverseRelClass) - .setRelType(relType) - .setSubReltype(subRelType)); - } - } - /** * Helper method: combines the relation attributes * @param relType @@ -127,6 +103,24 @@ public class ModelSupport { return String.format("%s_%s_%s", relType, subRelType, relClass); } + /** + * Helper method: deserialize the relation attributes serialized with rel + * @param relType + * @param subRelType + * @param relClass + * @return + */ + public static RelationLabel unRel(String deserialization) { + final String[] s = deserialization.split("_"); + if (s!= null && s.length==3) { + final Relation.RELTYPE currentRelType = Relation.RELTYPE.valueOf(s[0]); + final Relation.SUBRELTYPE currentSubRelType = Relation.SUBRELTYPE.valueOf(s[1]); + final Relation.RELCLASS currentRelClass = Relation.RELCLASS.valueOf(s[2]); + return new RelationLabel(currentRelClass, currentRelType, currentSubRelType); + } + throw new IllegalArgumentException("Invalid relationship format for "+ deserialization); + } + private static final String schemeTemplate = "dnet:%s_%s_relations"; public static final String DATE_FORMAT = "yyyy-MM-dd"; diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationInverse.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationInverse.java deleted file mode 100644 index 27a5c3411..000000000 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationInverse.java +++ /dev/null @@ -1,46 +0,0 @@ - -package eu.dnetlib.dhp.schema.oaf.common; - -public class RelationInverse { - private String relClass; - private String inverseRelClass; - private String relType; - private String subReltype; - - public String getRelType() { - return relType; - } - - public RelationInverse setRelType(String relType) { - this.relType = relType; - return this; - } - - public String getSubReltype() { - return subReltype; - } - - public RelationInverse setSubReltype(String subReltype) { - this.subReltype = subReltype; - return this; - } - - public String getRelClass() { - return relClass; - } - - public RelationInverse setRelClass(String relClass) { - this.relClass = relClass; - return this; - } - - public String getInverseRelClass() { - return inverseRelClass; - } - - public RelationInverse setInverseRelClass(String inverseRelClass) { - this.inverseRelClass = inverseRelClass; - return this; - } - -} diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationLabel.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationLabel.java new file mode 100644 index 000000000..45f46b737 --- /dev/null +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/common/RelationLabel.java @@ -0,0 +1,33 @@ + +package eu.dnetlib.dhp.schema.oaf.common; + +import eu.dnetlib.dhp.schema.oaf.Relation; + +public class RelationLabel { + private final Relation.RELCLASS relClass; + private final Relation.RELTYPE relType; + private final Relation.SUBRELTYPE subReltype; + + public RelationLabel(Relation.RELCLASS relClass, Relation.RELTYPE relType, Relation.SUBRELTYPE subReltype) { + this.relClass = relClass; + this.relType = relType; + this.subReltype = subReltype; + + } + + public RelationLabel inverse() { + return new RelationLabel(relClass.getInverse(), relType, subReltype); + } + + public Relation.RELTYPE getRelType() { + return relType; + } + + public Relation.SUBRELTYPE getSubReltype() { + return subReltype; + } + + public Relation.RELCLASS getRelClass() { + return relClass; + } +} 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 dc625eb20..d78aee5ec 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 @@ -18,443 +18,443 @@ import eu.dnetlib.dhp.schema.oaf.common.AccessRightComparator; public class OafMapperUtils { - private OafMapperUtils() { - } + private OafMapperUtils() { + } - public static KeyValue keyValue(final String k, final String v) { - final KeyValue kv = new KeyValue(); - kv.setKey(k); - kv.setValue(v); - return kv; - } + public static KeyValue keyValue(final String k, final String v) { + final KeyValue kv = new KeyValue(); + kv.setKey(k); + kv.setValue(v); + return kv; + } - public static List listKeyValues(final String... s) { - if (s.length % 2 > 0) { - throw new IllegalArgumentException("Invalid number of parameters (k,v,k,v,....)"); - } + public static List listKeyValues(final String... s) { + if (s.length % 2 > 0) { + throw new IllegalArgumentException("Invalid number of parameters (k,v,k,v,....)"); + } - final List list = new ArrayList<>(); - for (int i = 0; i < s.length; i += 2) { - list.add(keyValue(s[i], s[i + 1])); - } - return list; - } + final List list = new ArrayList<>(); + for (int i = 0; i < s.length; i += 2) { + list.add(keyValue(s[i], s[i + 1])); + } + return list; + } - 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 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 Qualifier unknown(final String schemeid) { - return qualifier(UNKNOWN, "Unknown", schemeid); - } + public static Qualifier unknown(final String schemeid) { + return qualifier(UNKNOWN, "Unknown", schemeid); + } - public static AccessRight accessRight( - final String classid, - final String classname, - final String schemeid) { - return accessRight(classid, classname, schemeid, null); - } + public static AccessRight accessRight( + final String classid, + final String classname, + final String schemeid) { + return accessRight(classid, classname, schemeid, null); + } - public static AccessRight accessRight( - final String classid, - final String classname, - final String schemeid, - final OpenAccessRoute openAccessRoute) { - final AccessRight accessRight = new AccessRight(); - accessRight.setClassid(classid); - accessRight.setClassname(classname); - accessRight.setSchemeid(schemeid); - accessRight.setOpenAccessRoute(openAccessRoute); - return accessRight; - } + public static AccessRight accessRight( + final String classid, + final String classname, + final String schemeid, + final OpenAccessRoute openAccessRoute) { + final AccessRight accessRight = new AccessRight(); + accessRight.setClassid(classid); + accessRight.setClassname(classname); + accessRight.setSchemeid(schemeid); + accessRight.setOpenAccessRoute(openAccessRoute); + return accessRight; + } - public static Qualifier qualifier( - final String classid, - final String classname, - final String schemeid) { - final Qualifier q = new Qualifier(); - q.setClassid(classid); - q.setClassname(classname); - q.setSchemeid(schemeid); - return q; - } + public static Qualifier qualifier( + final String classid, + final String classname, + final String schemeid) { + final Qualifier q = new Qualifier(); + q.setClassid(classid); + q.setClassname(classname); + q.setSchemeid(schemeid); + return q; + } - public static Qualifier qualifier(final Qualifier qualifier) { - final Qualifier q = new Qualifier(); - q.setClassid(qualifier.getClassid()); - q.setClassname(qualifier.getClassname()); - q.setSchemeid(qualifier.getSchemeid()); - return q; - } + public static Qualifier qualifier(final Qualifier qualifier) { + final Qualifier q = new Qualifier(); + q.setClassid(qualifier.getClassid()); + q.setClassname(qualifier.getClassname()); + q.setSchemeid(qualifier.getSchemeid()); + return q; + } - public static Subject subject( - final String value, - final String classid, - final String classname, - final String schemeid, - final DataInfo dataInfo) { + public static Subject subject( + final String value, + final String classid, + final String classname, + final String schemeid, + final DataInfo dataInfo) { - return subject(value, qualifier(classid, classname, schemeid), dataInfo); - } + return subject(value, qualifier(classid, classname, schemeid), dataInfo); + } - public static StructuredProperty structuredProperty( - final String value, - final String classid, - final String classname, - final String schemeid) { + public static StructuredProperty structuredProperty( + final String value, + final String classid, + final String classname, + final String schemeid) { - return structuredProperty(value, qualifier(classid, classname, schemeid)); - } + return structuredProperty(value, qualifier(classid, classname, schemeid)); + } - public static Subject subject( - final String value, - final Qualifier qualifier, - final DataInfo dataInfo) { - if (value == null) { - return null; - } - final Subject s = new Subject(); - s.setValue(value); - s.setQualifier(qualifier); - s.setDataInfo(dataInfo); - return s; - } + public static Subject subject( + final String value, + final Qualifier qualifier, + final DataInfo dataInfo) { + if (value == null) { + return null; + } + final Subject s = new Subject(); + s.setValue(value); + s.setQualifier(qualifier); + s.setDataInfo(dataInfo); + return s; + } - public static StructuredProperty structuredProperty( - final String value, - final Qualifier qualifier) { - if (value == null) { - return null; - } - final StructuredProperty sp = new StructuredProperty(); - sp.setValue(value); - sp.setQualifier(qualifier); - return sp; - } + public static StructuredProperty structuredProperty( + final String value, + final Qualifier qualifier) { + if (value == null) { + return null; + } + final StructuredProperty sp = new StructuredProperty(); + sp.setValue(value); + sp.setQualifier(qualifier); + return sp; + } - public static Publisher publisher(final String name) { - final Publisher p = new Publisher(); - p.setName(name); - return p; - } + public static Publisher publisher(final String name) { + final Publisher p = new Publisher(); + p.setName(name); + return p; + } - public static License license(final String url) { - final License l = new License(); - l.setUrl(url); - return l; - } + public static License license(final String url) { + final License l = new License(); + l.setUrl(url); + return l; + } - public static AuthorPid authorPid( - final String value, - final Qualifier qualifier, - final DataInfo dataInfo) { - if (value == null) { - return null; - } - final AuthorPid ap = new AuthorPid(); - ap.setValue(value); - ap.setQualifier(qualifier); - ap.setDataInfo(dataInfo); - return ap; - } + public static AuthorPid authorPid( + final String value, + final Qualifier qualifier, + final DataInfo dataInfo) { + if (value == null) { + return null; + } + final AuthorPid ap = new AuthorPid(); + ap.setValue(value); + ap.setQualifier(qualifier); + ap.setDataInfo(dataInfo); + return ap; + } - public static AuthorPid authorPid( - final String value, - final String classid, - final String schemeid, - final DataInfo dataInfo) { - if (value == null) { - return null; - } - final AuthorPid ap = new AuthorPid(); - ap.setValue(value); - ap.setQualifier(qualifier(classid, classid, schemeid)); - ap.setDataInfo(dataInfo); - return ap; - } + public static AuthorPid authorPid( + final String value, + final String classid, + final String schemeid, + final DataInfo dataInfo) { + if (value == null) { + return null; + } + final AuthorPid ap = new AuthorPid(); + ap.setValue(value); + ap.setQualifier(qualifier(classid, classid, schemeid)); + ap.setDataInfo(dataInfo); + return ap; + } - public static ExtraInfo extraInfo( - final String name, - final String value, - final String typology, - final String provenance, - final String trust) { - final ExtraInfo info = new ExtraInfo(); - info.setName(name); - info.setValue(value); - info.setTypology(typology); - info.setProvenance(provenance); - info.setTrust(trust); - return info; - } + public static ExtraInfo extraInfo( + final String name, + final String value, + final String typology, + final String provenance, + final String trust) { + final ExtraInfo info = new ExtraInfo(); + info.setName(name); + info.setValue(value); + info.setTypology(typology); + info.setProvenance(provenance); + info.setTrust(trust); + return info; + } - public static OAIProvenance oaiIProvenance( - final String identifier, - final String baseURL, - final String metadataNamespace, - final Boolean altered, - final String datestamp, - final String harvestDate) { + public static OAIProvenance oaiIProvenance( + final String identifier, + final String baseURL, + final String metadataNamespace, + final Boolean altered, + final String datestamp, + final String harvestDate) { - final OriginDescription desc = new OriginDescription(); - desc.setIdentifier(identifier); - desc.setBaseURL(baseURL); - desc.setMetadataNamespace(metadataNamespace); - desc.setAltered(altered); - desc.setDatestamp(datestamp); - desc.setHarvestDate(harvestDate); + final OriginDescription desc = new OriginDescription(); + desc.setIdentifier(identifier); + desc.setBaseURL(baseURL); + desc.setMetadataNamespace(metadataNamespace); + desc.setAltered(altered); + desc.setDatestamp(datestamp); + desc.setHarvestDate(harvestDate); - final OAIProvenance p = new OAIProvenance(); - p.setOriginDescription(desc); + final OAIProvenance p = new OAIProvenance(); + p.setOriginDescription(desc); - return p; - } + return p; + } - public static Journal journal( - final String name, - final String issnPrinted, - final String issnOnline, - final String issnLinking) { + public static Journal journal( + final String name, + final String issnPrinted, + final String issnOnline, + final String issnLinking) { - return hasIssn(issnPrinted, issnOnline, issnLinking) ? journal( - name, - issnPrinted, - issnOnline, - issnLinking, - null, - null, - null, - null, - null, - null, - null) : null; - } + return hasIssn(issnPrinted, issnOnline, issnLinking) ? journal( + name, + issnPrinted, + issnOnline, + issnLinking, + null, + null, + null, + null, + null, + null, + null) : null; + } - public static Journal journal( - final String name, - final String issnPrinted, - final String issnOnline, - final String issnLinking, - final String ep, - final String iss, - final String sp, - final String vol, - final String edition, - final String conferenceplace, - final String conferencedate) { + public static Journal journal( + final String name, + final String issnPrinted, + final String issnOnline, + final String issnLinking, + final String ep, + final String iss, + final String sp, + final String vol, + final String edition, + final String conferenceplace, + final String conferencedate) { - if (StringUtils.isNotBlank(name) || hasIssn(issnPrinted, issnOnline, issnLinking)) { - final Journal j = new Journal(); - j.setName(name); - j.setIssnPrinted(issnPrinted); - j.setIssnOnline(issnOnline); - j.setIssnLinking(issnLinking); - j.setEp(ep); - j.setIss(iss); - j.setSp(sp); - j.setVol(vol); - j.setEdition(edition); - j.setConferenceplace(conferenceplace); - j.setConferencedate(conferencedate); - return j; - } else { - return null; - } - } + if (StringUtils.isNotBlank(name) || hasIssn(issnPrinted, issnOnline, issnLinking)) { + final Journal j = new Journal(); + j.setName(name); + j.setIssnPrinted(issnPrinted); + j.setIssnOnline(issnOnline); + j.setIssnLinking(issnLinking); + j.setEp(ep); + j.setIss(iss); + j.setSp(sp); + j.setVol(vol); + j.setEdition(edition); + j.setConferenceplace(conferenceplace); + j.setConferencedate(conferencedate); + return j; + } else { + return null; + } + } - private static boolean hasIssn(String issnPrinted, String issnOnline, String issnLinking) { - return StringUtils.isNotBlank(issnPrinted) - || StringUtils.isNotBlank(issnOnline) - || StringUtils.isNotBlank(issnLinking); - } + private static boolean hasIssn(String issnPrinted, String issnOnline, String issnLinking) { + return StringUtils.isNotBlank(issnPrinted) + || StringUtils.isNotBlank(issnOnline) + || StringUtils.isNotBlank(issnLinking); + } - public static DataInfo dataInfo( - final float trust, - final String inferenceprovenance, - final boolean inferred, - final Qualifier provenanceaction) { - final DataInfo d = new DataInfo(); - d.setTrust(trust); - d.setInferenceprovenance(inferenceprovenance); - d.setInferred(inferred); - d.setProvenanceaction(provenanceaction); - return d; - } + public static DataInfo dataInfo( + final float trust, + final String inferenceprovenance, + final boolean inferred, + final Qualifier provenanceaction) { + final DataInfo d = new DataInfo(); + d.setTrust(trust); + d.setInferenceprovenance(inferenceprovenance); + d.setInferred(inferred); + d.setProvenanceaction(provenanceaction); + return d; + } - public static EntityDataInfo dataInfo( - final boolean invisible, - final boolean deletedbyinference, - final float trust, - final String inferenceprovenance, - final boolean inferred, - final Qualifier provenanceaction) { - final EntityDataInfo d = new EntityDataInfo(); - d.setTrust(trust); - d.setInvisible(invisible); - d.setDeletedbyinference(deletedbyinference); - d.setInferenceprovenance(inferenceprovenance); - d.setInferred(inferred); - d.setProvenanceaction(provenanceaction); - return d; - } + public static EntityDataInfo dataInfo( + final boolean invisible, + final boolean deletedbyinference, + final float trust, + final String inferenceprovenance, + final boolean inferred, + final Qualifier provenanceaction) { + final EntityDataInfo d = new EntityDataInfo(); + d.setTrust(trust); + d.setInvisible(invisible); + d.setDeletedbyinference(deletedbyinference); + d.setInferenceprovenance(inferenceprovenance); + d.setInferred(inferred); + d.setProvenanceaction(provenanceaction); + return d; + } - public static String asString(final Object o) { - return o == null ? "" : o.toString(); - } + public static String asString(final Object o) { + return o == null ? "" : o.toString(); + } - public static Predicate distinctByKey( - final Function keyExtractor) { - final Map seen = new ConcurrentHashMap<>(); - return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; - } + public static Predicate distinctByKey( + final Function keyExtractor) { + final Map seen = new ConcurrentHashMap<>(); + return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } - public static Qualifier createBestAccessRights(final List instanceList) { - return getBestAccessRights(instanceList); - } + public static Qualifier createBestAccessRights(final List instanceList) { + return getBestAccessRights(instanceList); + } - protected static Qualifier getBestAccessRights(final List instanceList) { - if (instanceList != null) { - final Optional min = instanceList - .stream() - .map(Instance::getAccessright) - .min(new AccessRightComparator<>()); + protected static Qualifier getBestAccessRights(final List instanceList) { + if (instanceList != null) { + final Optional min = instanceList + .stream() + .map(Instance::getAccessright) + .min(new AccessRightComparator<>()); - final Qualifier rights = min.map(OafMapperUtils::qualifier).orElseGet(Qualifier::new); + final Qualifier rights = min.map(OafMapperUtils::qualifier).orElseGet(Qualifier::new); - if (StringUtils.isBlank(rights.getClassid())) { - rights.setClassid(UNKNOWN); - } - if (StringUtils.isBlank(rights.getClassname()) - || UNKNOWN.equalsIgnoreCase(rights.getClassname())) { - rights.setClassname(NOT_AVAILABLE); - } - if (StringUtils.isBlank(rights.getSchemeid())) { - rights.setSchemeid(DNET_ACCESS_MODES); - } + if (StringUtils.isBlank(rights.getClassid())) { + rights.setClassid(UNKNOWN); + } + if (StringUtils.isBlank(rights.getClassname()) + || UNKNOWN.equalsIgnoreCase(rights.getClassname())) { + rights.setClassname(NOT_AVAILABLE); + } + if (StringUtils.isBlank(rights.getSchemeid())) { + rights.setSchemeid(DNET_ACCESS_MODES); + } - return rights; - } - return null; - } + return rights; + } + return null; + } - public static Measure newMeasureInstance(String id, String value, String key, DataInfo dataInfo) { - Measure m = new Measure(); - m.setId(id); - m.setUnit(Arrays.asList(unit(key, value, dataInfo))); - return m; - } + public static Measure newMeasureInstance(String id, String value, String key, DataInfo dataInfo) { + Measure m = new Measure(); + m.setId(id); + m.setUnit(Arrays.asList(unit(key, value, dataInfo))); + return m; + } - public static MeasureUnit unit(String key, String value, DataInfo dataInfo) { - MeasureUnit unit = new MeasureUnit(); - unit.setKey(key); - unit.setValue(value); - unit.setDataInfo(dataInfo); - return unit; - } + public static MeasureUnit unit(String key, String value, DataInfo dataInfo) { + MeasureUnit unit = new MeasureUnit(); + unit.setKey(key); + unit.setValue(value); + unit.setDataInfo(dataInfo); + return unit; + } - public static Relation getRelation(final String source, - final String target, - final Relation.RELTYPE relType, - final Relation.SUBRELTYPE subRelType, - final Relation.RELCLASS relClass, - final Entity entity) { - return getRelation(source, target, relType, subRelType, relClass, entity, null); - } + public static Relation getRelation(final String source, + final String target, + final Relation.RELTYPE relType, + final Relation.SUBRELTYPE subRelType, + final Relation.RELCLASS relClass, + final Entity entity) { + return getRelation(source, target, relType, subRelType, relClass, entity, null); + } - public static Relation getRelation(final String source, - final String target, - final Relation.RELTYPE relType, - final Relation.SUBRELTYPE subRelType, - final Relation.RELCLASS relClass, - final Entity entity, - final String validationDate) { + public static Relation getRelation(final String source, + final String target, + final Relation.RELTYPE relType, + final Relation.SUBRELTYPE subRelType, + final Relation.RELCLASS relClass, + final Entity entity, + final String validationDate) { - final List provenance = getProvenance( - entity.getCollectedfrom(), fromEntityDataInfo(entity.getDataInfo())); - return getRelation( - source, target, relType, subRelType, relClass, provenance, validationDate, null); - } + final List provenance = getProvenance( + entity.getCollectedfrom(), fromEntityDataInfo(entity.getDataInfo())); + return getRelation( + source, target, relType, subRelType, relClass, provenance, validationDate, null); + } - public static Relation getRelation(final String source, - final String target, - final Relation.RELTYPE relType, - final Relation.SUBRELTYPE subRelType, - final Relation.RELCLASS relClass, - final List provenance) { - return getRelation( - source, target, relType, subRelType, relClass, provenance, null, null); - } + public static Relation getRelation(final String source, + final String target, + final Relation.RELTYPE relType, + final Relation.SUBRELTYPE subRelType, + final Relation.RELCLASS relClass, + final List provenance) { + return getRelation( + source, target, relType, subRelType, relClass, provenance, null, null); + } - public static Relation getRelation(final String source, - final String target, - final Relation.RELTYPE relType, - final Relation.SUBRELTYPE subRelType, - final Relation.RELCLASS relClass, - final List provenance, - final List properties) { - return getRelation( - source, target, relType, subRelType, relClass, provenance, null, properties); - } + public static Relation getRelation(final String source, + final String target, + final Relation.RELTYPE relType, + final Relation.SUBRELTYPE subRelType, + final Relation.RELCLASS relClass, + final List provenance, + final List properties) { + return getRelation( + source, target, relType, subRelType, relClass, provenance, null, properties); + } - public static Relation getRelation(final String source, - final String target, - final Relation.RELTYPE relType, - final Relation.SUBRELTYPE subRelType, - final Relation.RELCLASS relClass, - final List provenance, - final String validationDate, - final List properties) { - final Relation rel = new Relation(); - rel.setRelType(relType); - rel.setSubRelType(subRelType); - rel.setRelClass(relClass); - rel.setSource(source); - rel.setTarget(target); - rel.setProvenance(provenance); - rel.setValidated(StringUtils.isNotBlank(validationDate)); - rel.setValidationDate(StringUtils.isNotBlank(validationDate) ? validationDate : null); - rel.setProperties(properties); - return rel; - } + public static Relation getRelation(final String source, + final String target, + final Relation.RELTYPE relType, + final Relation.SUBRELTYPE subRelType, + final Relation.RELCLASS relClass, + final List provenance, + final String validationDate, + final List properties) { + final Relation rel = new Relation(); + rel.setRelType(relType); + rel.setSubRelType(subRelType); + rel.setRelClass(relClass); + rel.setSource(source); + rel.setTarget(target); + rel.setProvenance(provenance); + rel.setValidated(StringUtils.isNotBlank(validationDate)); + rel.setValidationDate(StringUtils.isNotBlank(validationDate) ? validationDate : null); + rel.setProperties(properties); + return rel; + } - public static List getProvenance(final List collectedfrom, final DataInfo dataInfo) { - return collectedfrom - .stream() - .map(cf -> getProvenance(cf, dataInfo)) - .collect(Collectors.toList()); - } + public static List getProvenance(final List collectedfrom, final DataInfo dataInfo) { + return collectedfrom + .stream() + .map(cf -> getProvenance(cf, dataInfo)) + .collect(Collectors.toList()); + } - public static Provenance getProvenance(final KeyValue collectedfrom, final DataInfo dataInfo) { - final Provenance prov = new Provenance(); - prov.setCollectedfrom(collectedfrom); - prov.setDataInfo(dataInfo); - return prov; - } + public static Provenance getProvenance(final KeyValue collectedfrom, final DataInfo dataInfo) { + final Provenance prov = new Provenance(); + prov.setCollectedfrom(collectedfrom); + prov.setDataInfo(dataInfo); + return prov; + } - public static String getProvenance(DataInfo dataInfo) { - return Optional - .ofNullable(dataInfo) - .map( - d -> Optional - .ofNullable(d.getProvenanceaction()) - .map(Qualifier::getClassid) - .orElse("")) - .orElse(""); - } + public static String getProvenance(DataInfo dataInfo) { + return Optional + .ofNullable(dataInfo) + .map( + d -> Optional + .ofNullable(d.getProvenanceaction()) + .map(Qualifier::getClassid) + .orElse("")) + .orElse(""); + } - public static DataInfo fromEntityDataInfo(EntityDataInfo entityDataInfo) { - DataInfo dataInfo = new DataInfo(); - dataInfo.setTrust(entityDataInfo.getTrust()); - dataInfo.setInferenceprovenance(entityDataInfo.getInferenceprovenance()); - dataInfo.setInferred(entityDataInfo.getInferred()); - dataInfo.setProvenanceaction(entityDataInfo.getProvenanceaction()); - return dataInfo; - } + public static DataInfo fromEntityDataInfo(EntityDataInfo entityDataInfo) { + DataInfo dataInfo = new DataInfo(); + dataInfo.setTrust(entityDataInfo.getTrust()); + dataInfo.setInferenceprovenance(entityDataInfo.getInferenceprovenance()); + dataInfo.setInferred(entityDataInfo.getInferred()); + dataInfo.setProvenanceaction(entityDataInfo.getProvenanceaction()); + return dataInfo; + } } diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala deleted file mode 100644 index 7ec51922a..000000000 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/sx/OafUtils.scala +++ /dev/null @@ -1,59 +0,0 @@ -package eu.dnetlib.dhp.schema.sx - -import eu.dnetlib.dhp.schema.common.ModelConstants -import eu.dnetlib.dhp.schema.oaf._ - -object OafUtils { - - def generateKeyValue(key: String, value: String): KeyValue = { - val kv: KeyValue = new KeyValue() - kv.setKey(key) - kv.setValue(value) - kv - } - - def generateDataInfo(trust: Float = 0.9f, invisible: Boolean = false): DataInfo = { - val di = new DataInfo - di.setInferred(false) - di.setTrust(trust) - di.setProvenanceaction(createQualifier(ModelConstants.SYSIMPORT_ACTIONSET, ModelConstants.DNET_PROVENANCE_ACTIONS)) - di - } - - def createQualifier(cls: String, sch: String): Qualifier = { - createQualifier(cls, cls, sch) - } - - def createQualifier(classId: String, className: String, schemeId: String): Qualifier = { - val q: Qualifier = new Qualifier - q.setClassid(classId) - q.setClassname(className) - q.setSchemeid(schemeId) - q - } - - def createAccessRight(classId: String, className: String, schemeId: String): AccessRight = { - val accessRight: AccessRight = new AccessRight - accessRight.setClassid(classId) - accessRight.setClassname(className) - accessRight.setSchemeid(schemeId) - accessRight - } - - def createSP(value: String, classId: String,className:String, schemeId: String): StructuredProperty = { - val sp = new StructuredProperty - sp.setQualifier(createQualifier(classId,className, schemeId)) - sp.setValue(value) - sp - - } - - def createSP(value: String, classId: String, schemeId: String): StructuredProperty = { - val sp = new StructuredProperty - sp.setQualifier(createQualifier(classId, schemeId)) - sp.setValue(value) - sp - - } - -} diff --git a/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelInfo.java b/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelInfo.java deleted file mode 100644 index e07fcef66..000000000 --- a/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelInfo.java +++ /dev/null @@ -1,25 +0,0 @@ - -package eu.dnetlib.scholexplorer.relation; - -import java.io.Serializable; - -public class RelInfo implements Serializable { - private String original; - private String inverse; - - public String getOriginal() { - return original; - } - - public void setOriginal(String original) { - this.original = original; - } - - public String getInverse() { - return inverse; - } - - public void setInverse(String inverse) { - this.inverse = inverse; - } -} diff --git a/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelationMapper.java b/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelationMapper.java deleted file mode 100644 index eb708c390..000000000 --- a/dhp-common/src/main/java/eu/dnetlib/scholexplorer/relation/RelationMapper.java +++ /dev/null @@ -1,20 +0,0 @@ - -package eu.dnetlib.scholexplorer.relation; - -import java.io.Serializable; -import java.util.HashMap; - -import org.apache.commons.io.IOUtils; - -import com.fasterxml.jackson.databind.ObjectMapper; - -public class RelationMapper extends HashMap implements Serializable { - - public static RelationMapper load() throws Exception { - - final String json = IOUtils.toString(RelationMapper.class.getResourceAsStream("relations.json")); - - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json, RelationMapper.class); - } -} diff --git a/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupportTest.java b/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupportTest.java index eac87310a..802a0b9db 100644 --- a/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupportTest.java +++ b/dhp-common/src/test/java/eu/dnetlib/dhp/schema/oaf/common/ModelSupportTest.java @@ -36,15 +36,4 @@ public class ModelSupportTest { } } - @Nested - class InverseRelation { - - @Test - void findRelations() { - assertNotNull(ModelSupport.findRelation("isMetadataFor")); - assertNotNull(ModelSupport.findRelation("ismetadatafor")); - assertNotNull(ModelSupport.findRelation("ISMETADATAFOR")); - assertNotNull(ModelSupport.findRelation("isRelatedTo")); - } - } } diff --git a/dhp-common/src/test/java/eu/dnetlib/scholexplorer/relation/RelationMapperTest.java b/dhp-common/src/test/java/eu/dnetlib/scholexplorer/relation/RelationMapperTest.java deleted file mode 100644 index 8ed9fb4b4..000000000 --- a/dhp-common/src/test/java/eu/dnetlib/scholexplorer/relation/RelationMapperTest.java +++ /dev/null @@ -1,16 +0,0 @@ - -package eu.dnetlib.scholexplorer.relation; - -import static org.junit.jupiter.api.Assertions.assertFalse; - -import org.junit.jupiter.api.Test; - -class RelationMapperTest { - - @Test - void testLoadRels() throws Exception { - - RelationMapper relationMapper = RelationMapper.load(); - assertFalse(relationMapper.isEmpty()); - } -} diff --git a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteModelConstants.scala b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteModelConstants.scala index 0d66dc006..c5db03c05 100644 --- a/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteModelConstants.scala +++ b/dhp-workflows/dhp-aggregation/src/main/scala/eu/dnetlib/dhp/datacite/DataciteModelConstants.scala @@ -2,7 +2,7 @@ package eu.dnetlib.dhp.datacite import eu.dnetlib.dhp.schema.common.ModelConstants import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils -import eu.dnetlib.dhp.schema.oaf.{DataInfo, EntityDataInfo, KeyValue} +import eu.dnetlib.dhp.schema.oaf.{DataInfo, EntityDataInfo, KeyValue, Relation} import java.io.InputStream import java.time.format.DateTimeFormatter @@ -66,12 +66,13 @@ class DataciteModelConstants extends Serializable {} object DataciteModelConstants { - val REL_TYPE_VALUE: String = "resultResult" + val REL_TYPE_VALUE =Relation.RELTYPE.resultResult val DATE_RELATION_KEY = "RelationDate" val DATACITE_FILTER_PATH = "/eu/dnetlib/dhp/datacite/datacite_filter" - val DOI_CLASS = "doi" val SUBJ_CLASS = "keywords" val DATACITE_NAME = "Datacite" + val PMID = "pmid" + val ARXIV = "arxiv" val dataInfo: EntityDataInfo = dataciteDataInfo(0.9f) val relDataInfo = OafMapperUtils.fromEntityDataInfo(dataInfo); @@ -138,4 +139,8 @@ object DataciteModelConstants { Pattern.compile("(19|20)\\d\\d", Pattern.MULTILINE) ) + def validIdentifiersInRelation(relatedIdentifierType:String):Boolean = { + relatedIdentifierType.equalsIgnoreCase(ModelConstants.DOI) || relatedIdentifierType.equalsIgnoreCase(PMID) || + relatedIdentifierType.equalsIgnoreCase(ARXIV) + } } 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 aee5b196c..b6b481834 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 @@ -100,7 +100,7 @@ object DataciteToOAFTransformation { } /** This utility method indicates whether the embargo date has been reached - * @param embargo_end_date + * @param embargo_end_date the end date of embargo * @return True if the embargo date has been reached, false otherwise */ def embargo_end(embargo_end_date: String): Boolean = { @@ -345,8 +345,8 @@ object DataciteToOAFTransformation { // DOI is mapped on a PID inside a Instance object val doi_q = OafMapperUtils.qualifier( - "doi", - "doi", + ModelConstants.DOI, + ModelConstants.DOI, ModelConstants.DNET_PID_TYPES ) val pid = OafMapperUtils.structuredProperty(doi, doi_q) @@ -615,44 +615,52 @@ object DataciteToOAFTransformation { List(result) } + + //TODO @CLAUDIO we need to define relation in which verse + + /** + * This function generate unresolved relation from the original Datacite document + * @param rels the related identifier section on the document + * @param id the source record Identifier + * @param date the date of collection + * @return a List of OAF relation + */ private def generateRelations( rels: List[RelatedIdentifierType], id: String, date: String ): List[Relation] = { + + // TODO We need to check how to generate realtions + // in the previous implementation we create all Bidirection Relations + // related to a DOI pid or arxiv, val bidirectionalRels: List[Relation] = rels .filter(r => - Relation.RELCLASS.exists(r.relationType) && (r.relatedIdentifierType.equalsIgnoreCase("doi") || - r.relatedIdentifierType.equalsIgnoreCase("pmid") || - r.relatedIdentifierType.equalsIgnoreCase("arxiv")) + Relation.RELCLASS.exists(r.relationType) && validIdentifiersInRelation(r.relatedIdentifierType) ) .map(r => { - val subRelType = subRelTypeMapping(r.relationType).relType + val subRelType = Relation.SUBRELTYPE.valueOf(r.relationType) val target = DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType) - relation(id, target, subRelType, r.relationType, date) + relation(id, target, subRelType, Relation.RELCLASS.valueOf(r.relationType), date) }) val citationRels: List[Relation] = rels - .filter(r => - (r.relatedIdentifierType.equalsIgnoreCase("doi") || - r.relatedIdentifierType.equalsIgnoreCase("pmid") || - r.relatedIdentifierType.equalsIgnoreCase("arxiv")) && + .filter(r =>validIdentifiersInRelation(r.relatedIdentifierType) && (r.relationType.toLowerCase.contains("cite") || r.relationType.toLowerCase.contains("reference")) ) .map(r => { r.relationType match { - case ModelConstants.CITES | ModelConstants.REFERENCES => + case Relation.RELCLASS.Cites.toString | Relation.RELCLASS.References.toString => val target = DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType) - relation(id, target, ModelConstants.CITATION, ModelConstants.CITES, date) - case ModelConstants.IS_CITED_BY | ModelConstants.IS_REFERENCED_BY => + relation(id, target, Relation.SUBRELTYPE.citation, Relation.RELCLASS.Cites, date) + case Relation.RELCLASS.IsCitedBy.toString | Relation.RELCLASS.IsReferencedBy.toString => val source = DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType) - relation(source, id, ModelConstants.CITATION, ModelConstants.CITES, date) + relation(source, id, Relation.SUBRELTYPE.citation, Relation.RELCLASS.Cites, date) } }) - citationRels ::: bidirectionalRels } - def relation(source: String, target: String, subRelType: String, relClass: String, date: String): Relation = { + def relation(source: String, target: String, subRelType: Relation.SUBRELTYPE, relClass: Relation.RELCLASS, date: String): Relation = { val rel = new Relation rel.setProvenance(Lists.newArrayList(OafMapperUtils.getProvenance(DATACITE_COLLECTED_FROM, relDataInfo))) diff --git a/dhp-workflows/dhp-blacklist/src/main/java/eu/dnetlib/dhp/blacklist/ReadBlacklistFromDB.java b/dhp-workflows/dhp-blacklist/src/main/java/eu/dnetlib/dhp/blacklist/ReadBlacklistFromDB.java index eb87f28e2..ecaacddb3 100644 --- a/dhp-workflows/dhp-blacklist/src/main/java/eu/dnetlib/dhp/blacklist/ReadBlacklistFromDB.java +++ b/dhp-workflows/dhp-blacklist/src/main/java/eu/dnetlib/dhp/blacklist/ReadBlacklistFromDB.java @@ -14,7 +14,7 @@ import java.util.function.Consumer; import java.util.function.Function; import eu.dnetlib.dhp.schema.oaf.common.ModelSupport; -import eu.dnetlib.dhp.schema.oaf.common.RelationInverse; +import eu.dnetlib.dhp.schema.oaf.common.RelationLabel; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -76,30 +76,22 @@ public class ReadBlacklistFromDB implements Closeable { public List processBlacklistEntry(ResultSet rs) { try { Relation direct = new Relation(); - Relation inverse = new Relation(); + String source_prefix = ModelSupport.entityIdPrefix.get(rs.getString("source_type")); String target_prefix = ModelSupport.entityIdPrefix.get(rs.getString("target_type")); String source_direct = source_prefix + "|" + rs.getString("source"); direct.setSource(source_direct); - inverse.setTarget(source_direct); String target_direct = target_prefix + "|" + rs.getString("target"); direct.setTarget(target_direct); - inverse.setSource(target_direct); - String encoding = rs.getString("relationship"); - RelationInverse ri = ModelSupport.findInverse(encoding); - direct.setRelClass(ri.getRelClass()); - inverse.setRelClass(ri.getInverseRelClass()); - direct.setRelType(ri.getRelType()); - inverse.setRelType(ri.getRelType()); - direct.setSubRelType(ri.getSubReltype()); - inverse.setSubRelType(ri.getSubReltype()); - - return Arrays.asList(direct, inverse); - + final RelationLabel directLabel = ModelSupport.unRel(encoding); + direct.setRelClass(directLabel.getRelClass()); + direct.setRelType(directLabel.getRelType()); + direct.setSubRelType(directLabel.getSubReltype()); + return Arrays.asList(direct, direct.inverse()); } catch (final SQLException e) { throw new RuntimeException(e); } diff --git a/dhp-workflows/dhp-blacklist/src/test/java/eu/dnetlib/dhp/blacklist/BlacklistRelationTest.java b/dhp-workflows/dhp-blacklist/src/test/java/eu/dnetlib/dhp/blacklist/BlacklistRelationTest.java index b2e3f1453..b96fc3a79 100644 --- a/dhp-workflows/dhp-blacklist/src/test/java/eu/dnetlib/dhp/blacklist/BlacklistRelationTest.java +++ b/dhp-workflows/dhp-blacklist/src/test/java/eu/dnetlib/dhp/blacklist/BlacklistRelationTest.java @@ -5,7 +5,7 @@ import java.util.Arrays; import java.util.List; import eu.dnetlib.dhp.schema.oaf.common.ModelSupport; -import eu.dnetlib.dhp.schema.oaf.common.RelationInverse; +import eu.dnetlib.dhp.schema.oaf.common.RelationLabel; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -25,7 +25,7 @@ public class BlacklistRelationTest { "resultProject_outcome_isProducedBy"); rels.forEach(r -> { - RelationInverse inverse = ModelSupport.relationInverseMap.get(r); + RelationLabel inverse = ModelSupport.relationInverseMap.get(r); Assertions.assertNotNull(inverse); Assertions.assertNotNull(inverse.getRelType()); Assertions.assertNotNull(inverse.getSubReltype()); 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 8f62cc604..26efd50ba 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 @@ -203,9 +203,9 @@ object SparkGenerateDoiBoost { val r: Relation = new Relation r.setSource(pub.getId) r.setTarget(affId) - r.setRelType(ModelConstants.RESULT_ORGANIZATION) - r.setRelClass(ModelConstants.HAS_AUTHOR_INSTITUTION) - r.setSubRelType(ModelConstants.AFFILIATION) + r.setRelType(Relation.RELTYPE.resultOrganization) + r.setRelClass(Relation.RELCLASS.hasAuthorInstitution) + r.setSubRelType(Relation.SUBRELTYPE.affiliation) r.setProvenance(OafMapperUtils.getProvenance(pub.getCollectedfrom, dataInfo)) List(r) diff --git a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/OdfToOafMapper.java b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/OdfToOafMapper.java index 56c65f388..0195a76a2 100644 --- a/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/OdfToOafMapper.java +++ b/dhp-workflows/dhp-graph-mapper/src/main/java/eu/dnetlib/dhp/oa/graph/raw/OdfToOafMapper.java @@ -11,7 +11,7 @@ import java.util.*; import java.util.stream.Collectors; import eu.dnetlib.dhp.schema.oaf.common.ModelSupport; -import eu.dnetlib.dhp.schema.oaf.common.RelationInverse; +import eu.dnetlib.dhp.schema.oaf.common.RelationLabel; import org.apache.commons.lang3.StringUtils; import org.dom4j.Document; import org.dom4j.Element; @@ -401,7 +401,7 @@ public class OdfToOafMapper extends AbstractMdRecordToOafMapper { protected List getRelations(final String reltype, final String entityId, final String otherId, final Entity entity) { final List res = new ArrayList<>(); - RelationInverse rel = ModelSupport.findRelation(reltype); + RelationLabel rel = ModelSupport.findRelation(reltype); if (rel != null) { res .add(