package eu.dnetlib.dhp.oa.model.graph; import java.io.Serializable; import java.util.Objects; import com.github.imifou.jsonschema.module.addon.annotation.JsonSchema; import eu.dnetlib.dhp.oa.model.Provenance; /** * To represent the gereric relation between two entities. It has the following parameters: - private Node source to * represent the entity source of the relation - private Node target to represent the entity target of the relation - * private RelType reltype to represent the semantics of the relation - private Provenance provenance to represent the * provenance of the relation */ public class Relation implements Serializable { @JsonSchema(description = "The identifier of the source in the relation") private String source; @JsonSchema(description = "The entity type of the source in the relation") private String sourceType; @JsonSchema(description = "The identifier of the target in the relation") private String target; @JsonSchema(description = "The entity type of the target in the relation") private String targetType; @JsonSchema(description = "To represent the semantics of a relation between two entities") private RelType reltype; @JsonSchema(description = "The reason why OpenAIRE holds the relation ") private Provenance provenance; @JsonSchema( description = "True if the relation is related to a project and it has been collected from an authoritative source (i.e. the funder)") private boolean validated; @JsonSchema(description = "The date when the relation was collected from OpenAIRE") private String validationDate; public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getSourceType() { return sourceType; } public void setSourceType(String sourceType) { this.sourceType = sourceType; } public String getTarget() { return target; } public void setTarget(String target) { this.target = target; } public String getTargetType() { return targetType; } public void setTargetType(String targetType) { this.targetType = targetType; } public RelType getReltype() { return reltype; } public void setReltype(RelType reltype) { this.reltype = reltype; } public Provenance getProvenance() { return provenance; } public void setProvenance(Provenance provenance) { this.provenance = provenance; } public void setValidated(boolean validate) { this.validated = validate; } public boolean getValidated() { return validated; } public void setValidationDate(String validationDate) { this.validationDate = validationDate; } public String getValidationDate() { return validationDate; } @Override public int hashCode() { return Objects.hash(source, target, reltype.getType() + ":" + reltype.getName()); } public static Relation newInstance(String source, String sourceType, String target, String targetType, RelType reltype, Provenance provenance) { Relation relation = new Relation(); relation.source = source; relation.sourceType = sourceType; relation.target = target; relation.targetType = targetType; relation.reltype = reltype; relation.provenance = provenance; return relation; } }