1
16
17 package gate.lexicon;
18
19 import java.util.*;
20
21 import gate.Resource;
22 import gate.creole.AbstractLanguageResource;
23
24 public class MutableLexicalKnowledgeBaseImpl extends AbstractLanguageResource
25 implements MutableLexicalKnowledgeBase {
26
27 private String version = "1.0";
28 protected List synsets = new ArrayList();
29 protected HashMap words = new HashMap();
30 protected List posTypes = new ArrayList();
31 static final long serialVersionUID = -2543190013851016324L;
32 private Object lexId = "MIAKT Lexical KB Lexicon";
33
34 public MutableLexicalKnowledgeBaseImpl() {
35 for (int i = 0; i < POS_TYPES.length; i++)
36 posTypes.add(POS_TYPES[i]);
37 }
38
39 public Resource init() throws gate.creole.ResourceInstantiationException {
40 return this;
41 }
42
43 public Iterator getSynsets() {
44 return synsets.iterator();
45 }
46
47 public Iterator getSynsets(Object pos) {
48 if (pos == null)
49 return null;
50 List tempList = new ArrayList();
51 for (int i=0; i<synsets.size(); i++) {
52 LexKBSynset synset = (LexKBSynset) synsets.get(i);
53 if (pos.equals(synset.getPOS()))
54 tempList.add(synset);
55 } return tempList.iterator();
57 }
58
59 public List lookupWord(String lemma) {
60 if (lemma == null)
61 return null;
62 Word myWord = (Word) words.get(lemma);
63 if (myWord == null)
64 return null;
65 return myWord.getWordSenses();
66 }
67
68 public List lookupWord(String lemma, Object pos) {
69 if (lemma == null || pos == null)
70 return null;
71 Word myWord = (Word) words.get(lemma);
72 if (myWord == null)
73 return null;
74 List posSenses = new ArrayList();
75 Iterator iter = myWord.getWordSenses().iterator();
76 while (iter.hasNext()) {
77 LexKBWordSense sense = (LexKBWordSense) iter.next();
78 if (sense.getPOS().equals(pos))
79 posSenses.add(sense);
80 } return posSenses;
82 }
83
84
85 public MutableWord addWord(String lemma){
86 if (words.containsKey(lemma))
87 return (MutableWord) words.get(lemma);
88
89 MutableWordImpl newWord = new MutableWordImpl(lemma);
90 words.put(lemma, newWord);
91 return newWord;
92 }
93
94
95 public void setVersion(String newVersion){
96 version = newVersion;
97 }
98
99
100 public String getVersion() {
101 return version;
102 }
103
104 public MutableLexKBSynset addSynset() {
105 MutableLexKBSynset newSynset = new MutableLexKBSynsetImpl();
106 synsets.add(newSynset);
107 return newSynset;
108 }
109
110 public Object[] getPOSTypes() {
111 return posTypes.toArray();
112 }
113
114 public void addPOSType(Object newPOSType) {
115 if (newPOSType == null)
116 return;
117 posTypes.add(newPOSType);
118 }
119
120 public void removeWord(MutableWord theWord) {
121 if (theWord == null)
122 return;
123 theWord.removeSenses();
124 words.remove(theWord.getLemma());
125 }
127 public void removeSynset(MutableLexKBSynset synset) {
128 if (synset == null)
129 return;
130 List senses = synset.getWordSenses();
131 for (int i = 0; i < senses.size(); i++) {
132 LexKBWordSense sense = (LexKBWordSense) senses.get(i);
133 ((MutableWord) sense.getWord()).removeSense(sense);
134 } synset.removeSenses();
136 synsets.remove(synset);
137 }
139 public Object getLexiconId() {
140 return lexId;
141 }
142
143 public void setLexiconId(Object Id) {
144 lexId = Id;
145 }
146 }