/** * Method to parse a Slot * * @param slot Element The XOM element that represents the slot to be parsed. * @return Returns the data structure that represents the slot in a way that can be used by the * reasoning engine. * @throws ParseException Thrown if there is an error parsing the slot. */ private Term parseSlot(Element slot) throws ParseException { Elements children = slot.getChildElements(); Element firstChildName = children.get(0); boolean dataSlot = false; if (firstChildName.getLocalName().equals(tagNames.DATA)) { dataSlot = true; } if (!firstChildName.getLocalName().equals(tagNames.IND) && !firstChildName.getLocalName().equals(tagNames.DATA)) { throw new ParseException("In a <slot> only <Ind> and <Data> are allowed."); } // Getting the Role from the symbol Table, it will assign one if it // doesnt already exist int role = SymbolTable.internRole(firstChildName.getValue().trim()); Element element = children.get(1); Term term = parseDefaultElement(element); term.setRole(role); if (dataSlot) { term.setDataSlot(true); } return term; }
/** * Method to parse a resl (Rested Slot) * * @param resl Element The XOM element that represents the resl to be parsed. * @return Returns the data structure that represents the resl in a way that can be used by the * reasoning engine. * @throws ParseException Thrown if there is an error parsing the resl. */ private Term parseResl(Element resl) throws ParseException { Elements children = resl.getChildElements(); Element firstChild = skipRoleTag(children.get(0)); Term t = parseDefaultElement(firstChild); // HACK: only change symbol, if term is no <Plex> if (t.getSymbol() != SymbolTable.IPLEX) { t.setRole(SymbolTable.IREST); } return t; }
/** * Method to parse a repo (Rested Positional Slot) * * @param repo Element The XOM element that represents the repo to be parsed. * @return Term Returns the data structure that represents the repo in a way that can be used by * the reasoning engine. * @throws ParseException Thrown if there is an error parsing the repo. */ private Term parseRepo(Element repo) throws ParseException { Term t = parseResl(repo); t.setRole(SymbolTable.IPREST); return t; }