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 }