1 package de.dlr.shepard.context.semantic.entities;
2
3 import de.dlr.shepard.common.neo4j.entities.Named;
4 import de.dlr.shepard.common.util.Constants;
5 import de.dlr.shepard.common.util.HasId;
6 import java.util.Objects;
7 import lombok.Data;
8 import lombok.NoArgsConstructor;
9 import lombok.ToString;
10 import org.neo4j.ogm.annotation.GeneratedValue;
11 import org.neo4j.ogm.annotation.Id;
12 import org.neo4j.ogm.annotation.NodeEntity;
13 import org.neo4j.ogm.annotation.Relationship;
14
15 @NodeEntity
16 @Data
17 @NoArgsConstructor
18 public class SemanticAnnotation implements HasId, Named {
19
20 @Id
21 @GeneratedValue
22 private Long id;
23
24 @Deprecated
25 public String getName() {
26 return "%s::%s".formatted(this.getPropertyName(), this.getValueName());
27 }
28
29 private String propertyName;
30
31 private String propertyIRI;
32
33 private String valueName;
34
35 private String valueIRI;
36
37 @ToString.Exclude
38 @Relationship(type = Constants.PROPERTY_REPOSITORY)
39 private SemanticRepository propertyRepository;
40
41 @ToString.Exclude
42 @Relationship(type = Constants.VALUE_REPOSITORY)
43 private SemanticRepository valueRepository;
44
45
46
47
48
49
50 public SemanticAnnotation(long id) {
51 this.id = id;
52 }
53
54 @Override
55 public int hashCode() {
56 final int prime = 31;
57 var result = Objects.hash(id, propertyName, valueName, propertyIRI, valueIRI);
58 result = prime * result + HasId.hashcodeHelper(propertyRepository);
59 result = prime * result + HasId.hashcodeHelper(valueRepository);
60 return result;
61 }
62
63 @Override
64 public boolean equals(Object obj) {
65 if (this == obj) return true;
66 if (obj == null) return false;
67 if (!(obj instanceof SemanticAnnotation other)) return false;
68 return (
69 Objects.equals(id, other.id) &&
70 Objects.equals(propertyName, other.propertyName) &&
71 Objects.equals(valueName, other.valueName) &&
72 Objects.equals(propertyIRI, other.propertyIRI) &&
73 Objects.equals(valueIRI, other.valueIRI) &&
74 HasId.equalsHelper(propertyRepository, other.propertyRepository) &&
75 HasId.equalsHelper(valueRepository, other.valueRepository)
76 );
77 }
78
79 @Override
80 public String getUniqueId() {
81 return id.toString();
82 }
83 }