forked from D-Net/dnet-hadoop
WIP monodirectional citations, Datacite
This commit is contained in:
parent
0559d8b412
commit
2f7346e9cf
|
@ -78,16 +78,6 @@ object DataciteModelConstants {
|
||||||
OafMapperUtils.keyValue(ModelConstants.DATACITE_ID, DATACITE_NAME)
|
OafMapperUtils.keyValue(ModelConstants.DATACITE_ID, DATACITE_NAME)
|
||||||
|
|
||||||
val subRelTypeMapping: Map[String, OAFRelations] = Map(
|
val subRelTypeMapping: Map[String, OAFRelations] = Map(
|
||||||
ModelConstants.REFERENCES -> OAFRelations(
|
|
||||||
ModelConstants.REFERENCES,
|
|
||||||
ModelConstants.IS_REFERENCED_BY,
|
|
||||||
ModelConstants.RELATIONSHIP
|
|
||||||
),
|
|
||||||
ModelConstants.IS_REFERENCED_BY -> OAFRelations(
|
|
||||||
ModelConstants.IS_REFERENCED_BY,
|
|
||||||
ModelConstants.REFERENCES,
|
|
||||||
ModelConstants.RELATIONSHIP
|
|
||||||
),
|
|
||||||
ModelConstants.IS_SUPPLEMENTED_BY -> OAFRelations(
|
ModelConstants.IS_SUPPLEMENTED_BY -> OAFRelations(
|
||||||
ModelConstants.IS_SUPPLEMENTED_BY,
|
ModelConstants.IS_SUPPLEMENTED_BY,
|
||||||
ModelConstants.IS_SUPPLEMENT_TO,
|
ModelConstants.IS_SUPPLEMENT_TO,
|
||||||
|
@ -163,16 +153,6 @@ object DataciteModelConstants {
|
||||||
ModelConstants.IS_SOURCE_OF,
|
ModelConstants.IS_SOURCE_OF,
|
||||||
ModelConstants.VERSION
|
ModelConstants.VERSION
|
||||||
),
|
),
|
||||||
ModelConstants.CITES -> OAFRelations(
|
|
||||||
ModelConstants.CITES,
|
|
||||||
ModelConstants.IS_CITED_BY,
|
|
||||||
ModelConstants.CITATION
|
|
||||||
),
|
|
||||||
ModelConstants.IS_CITED_BY -> OAFRelations(
|
|
||||||
ModelConstants.IS_CITED_BY,
|
|
||||||
ModelConstants.CITES,
|
|
||||||
ModelConstants.CITATION
|
|
||||||
),
|
|
||||||
ModelConstants.IS_VARIANT_FORM_OF -> OAFRelations(
|
ModelConstants.IS_VARIANT_FORM_OF -> OAFRelations(
|
||||||
ModelConstants.IS_VARIANT_FORM_OF,
|
ModelConstants.IS_VARIANT_FORM_OF,
|
||||||
ModelConstants.IS_DERIVED_FROM,
|
ModelConstants.IS_DERIVED_FROM,
|
||||||
|
|
|
@ -645,7 +645,7 @@ object DataciteToOAFTransformation {
|
||||||
id: String,
|
id: String,
|
||||||
date: String
|
date: String
|
||||||
): List[Relation] = {
|
): List[Relation] = {
|
||||||
rels
|
val bidirectionalRels: List[Relation] = rels
|
||||||
.filter(r =>
|
.filter(r =>
|
||||||
subRelTypeMapping
|
subRelTypeMapping
|
||||||
.contains(r.relationType) && (r.relatedIdentifierType.equalsIgnoreCase("doi") ||
|
.contains(r.relationType) && (r.relatedIdentifierType.equalsIgnoreCase("doi") ||
|
||||||
|
@ -653,27 +653,48 @@ object DataciteToOAFTransformation {
|
||||||
r.relatedIdentifierType.equalsIgnoreCase("arxiv"))
|
r.relatedIdentifierType.equalsIgnoreCase("arxiv"))
|
||||||
)
|
)
|
||||||
.map(r => {
|
.map(r => {
|
||||||
|
val subRelType = subRelTypeMapping(r.relationType).relType
|
||||||
|
val target = DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType)
|
||||||
|
relation(id, target, subRelType, r.relationType, date)
|
||||||
|
})
|
||||||
|
val citationRels:List[Relation] = rels
|
||||||
|
.filter(r =>
|
||||||
|
(r.relatedIdentifierType.equalsIgnoreCase("doi") ||
|
||||||
|
r.relatedIdentifierType.equalsIgnoreCase("pmid") ||
|
||||||
|
r.relatedIdentifierType.equalsIgnoreCase("arxiv")) &&
|
||||||
|
(r.relationType.toLowerCase.contains("cite") || r.relationType.toLowerCase.contains("reference")))
|
||||||
|
.map(r => {
|
||||||
|
r.relationType match {
|
||||||
|
case ModelConstants.CITES | ModelConstants.REFERENCES =>
|
||||||
|
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 =>
|
||||||
|
val source = DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType)
|
||||||
|
relation(source, id, ModelConstants.CITATION, ModelConstants.CITES, date)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
citationRels ::: bidirectionalRels
|
||||||
|
}
|
||||||
|
|
||||||
|
def relation(source:String, target:String, subRelType:String, relClass:String, date:String): Relation = {
|
||||||
val rel = new Relation
|
val rel = new Relation
|
||||||
rel.setCollectedfrom(List(DATACITE_COLLECTED_FROM).asJava)
|
rel.setCollectedfrom(List(DATACITE_COLLECTED_FROM).asJava)
|
||||||
rel.setDataInfo(dataInfo)
|
rel.setDataInfo(dataInfo)
|
||||||
|
|
||||||
val subRelType = subRelTypeMapping(r.relationType).relType
|
|
||||||
rel.setRelType(REL_TYPE_VALUE)
|
rel.setRelType(REL_TYPE_VALUE)
|
||||||
rel.setSubRelType(subRelType)
|
rel.setSubRelType(subRelType)
|
||||||
rel.setRelClass(r.relationType)
|
rel.setRelClass(relClass)
|
||||||
|
|
||||||
val dateProps: KeyValue = OafMapperUtils.keyValue(DATE_RELATION_KEY, date)
|
val dateProps: KeyValue = OafMapperUtils.keyValue(DATE_RELATION_KEY, date)
|
||||||
|
|
||||||
rel.setProperties(List(dateProps).asJava)
|
rel.setProperties(List(dateProps).asJava)
|
||||||
|
|
||||||
rel.setSource(id)
|
rel.setSource(source)
|
||||||
rel.setTarget(
|
rel.setTarget(target)
|
||||||
DHPUtils.generateUnresolvedIdentifier(r.relatedIdentifier, r.relatedIdentifierType)
|
|
||||||
)
|
|
||||||
rel.setCollectedfrom(List(DATACITE_COLLECTED_FROM).asJava)
|
rel.setCollectedfrom(List(DATACITE_COLLECTED_FROM).asJava)
|
||||||
rel.getCollectedfrom.asScala.map(c => c.getValue).toList
|
rel.getCollectedfrom.asScala.map(c => c.getValue).toList
|
||||||
rel
|
rel
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def generateDSId(input: String): String = {
|
def generateDSId(input: String): String = {
|
||||||
|
|
Loading…
Reference in New Issue