1 package ixa.kaflib; 2 3 import java.io.Serializable; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 public class Predicate extends IReferable implements Serializable { 8 9 public static class Role implements Serializable { 10 11 private String rid; 12 private String semRole; 13 private Span<Term> span; 14 private List<ExternalRef> externalReferences; 15 private List<String> flags; 16 17 Role(String id, String semRole, Span span) { 18 this.rid = id; 19 this.semRole = semRole; 20 this.span = span; 21 this.externalReferences = new ArrayList<ExternalRef>(); 22 this.flags = new ArrayList<String>(); 23 } 24 25 @Override 26 public String toString() { 27 return "Role{" + 28 semRole + " -> " + 29 span.getStr() + 30 '}'; 31 } 32 33 public String getId() { 34 return this.rid; 35 } 36 37 public void setId(String id) { 38 this.rid = id; 39 } 40 41 public String getSemRole() { 42 return this.semRole; 43 } 44 45 public void setSemRole(String semRole) { 46 this.semRole = semRole; 47 } 48 49 public Span<Term> getSpan() { 50 return this.span; 51 } 52 53 public void setSpan(Span<Term> span) { 54 this.span = span; 55 } 56 57 public List<Term> getTerms() { 58 return this.span.getTargets(); 59 } 60 61 public void addTerm(Term term) { 62 this.span.addTarget(term); 63 } 64 65 public void addTerm(Term term, boolean isHead) { 66 this.span.addTarget(term, isHead); 67 } 68 69 public String getStr() { 70 String str = ""; 71 for (Term term : this.span.getTargets()) { 72 if (!str.isEmpty()) { 73 str += " "; 74 } 75 str += term.getStr(); 76 } 77 return str; 78 } 79 80 public ExternalRef getExternalRef(String resource) { 81 for (ExternalRef ref : externalReferences) { 82 if (ref.getResource().equalsIgnoreCase(resource)) { 83 return ref; 84 } 85 } 86 return null; 87 } 88 89 public List<ExternalRef> getExternalRefs() { 90 return externalReferences; 91 } 92 93 public void addExternalRef(ExternalRef externalRef) { 94 externalReferences.add(externalRef); 95 } 96 97 public void addExternalRefs(List<ExternalRef> externalRefs) { 98 externalReferences.addAll(externalRefs); 99 } 100 101 public List<String> getFlags() { 102 return this.flags; 103 } 104 105 public void addFlag(String flag) { 106 if (!this.flags.contains(flag)) { 107 this.flags.add(flag); 108 } 109 } 110 111 public void removeFlag(String flag) { 112 this.flags.remove(flag); 113 } 114 115 } 116 117 private String id; 118 private String uri; 119 private String source; 120 121 public String getSource() { 122 return source; 123 } 124 125 public void setSource(String source) { 126 this.source = source; 127 } 128 129 public boolean hasSource() { 130 return this.source != null; 131 } 132 133 private double confidence; 134 private Span<Term> span; 135 private List<Role> roles; 136 private List<ExternalRef> externalReferences; 137 private List<String> flags; 138 139 Predicate(String id, Span<Term> span) { 140 this.id = id; 141 this.span = span; 142 this.roles = new ArrayList<Role>(); 143 this.confidence = -1.0f; 144 this.externalReferences = new ArrayList<ExternalRef>(); 145 this.flags = new ArrayList<String>(); 146 } 147 148 public String getId() { 149 return this.id; 150 } 151 152 public void setId(String id) { 153 this.id = id; 154 } 155 156 public boolean hasUri() { 157 return (this.uri != null); 158 } 159 160 public String getUri() { 161 return this.uri; 162 } 163 164 public void setUri(String uri) { 165 this.uri = uri; 166 } 167 168 public boolean hasConfidence() { 169 return confidence != -1.0f; 170 } 171 172 public double getConfidence() { 173 return confidence; 174 } 175 176 public void setConfidence(double confidence) { 177 this.confidence = confidence; 178 } 179 180 public Span<Term> getSpan() { 181 return this.span; 182 } 183 184 public void setSpan(Span<Term> span) { 185 this.span = span; 186 } 187 188 public List<Term> getTerms() { 189 return this.span.getTargets(); 190 } 191 192 public void addTerm(Term term) { 193 this.span.addTarget(term); 194 } 195 196 public void addTerm(Term term, boolean isHead) { 197 this.span.addTarget(term, isHead); 198 } 199 200 public String getStr() { 201 String str = ""; 202 if (!this.span.isEmpty()) { 203 Term target = this.span.getFirstTarget(); 204 str += target.getId() + " " + target.getStr() + " "; 205 } 206 str += ":"; 207 for (Role role : this.roles) { 208 if (!role.span.isEmpty()) { 209 Term roleTarget = role.getSpan().getFirstTarget(); 210 str += " " + role.getSemRole() + "[" + roleTarget.getId() + " " + roleTarget.getStr() + "]"; 211 } 212 } 213 return str; 214 } 215 216 public String getSpanStr() { 217 String str = ""; 218 for (Term term : this.span.getTargets()) { 219 if (!str.isEmpty()) { 220 str += " "; 221 } 222 str += term.getStr(); 223 } 224 return str; 225 } 226 227 public ExternalRef getExternalRef(String resource) { 228 for (ExternalRef ref : externalReferences) { 229 if (ref.getResource().equalsIgnoreCase(resource)) { 230 return ref; 231 } 232 } 233 return null; 234 } 235 236 public List<ExternalRef> getExternalRefs() { 237 return externalReferences; 238 } 239 240 public void addExternalRef(ExternalRef externalRef) { 241 externalReferences.add(externalRef); 242 } 243 244 public void addExternalRefs(List<ExternalRef> externalRefs) { 245 externalReferences.addAll(externalRefs); 246 } 247 248 public List<Role> getRoles() { 249 return this.roles; 250 } 251 252 public void addRole(Role role) { 253 this.roles.add(role); 254 } 255 256 public void removeRole(Role role) { 257 this.roles.remove(role); 258 } 259 260 public List<String> getFlags() { 261 return this.flags; 262 } 263 264 public void addFlag(String flag) { 265 if (!this.flags.contains(flag)) { 266 this.flags.add(flag); 267 } 268 } 269 270 public void removeFlag(String flag) { 271 this.flags.remove(flag); 272 } 273 274 }