/** * Adds all of the temporal relationships in the given Protege complex abstraction instance * (specified with the <code>withRelationships</code> slot) to the given PROTEMPA complex * abstraction definition. * * @param instance a Protege complex abstraction <code>Instance</code>. * @param cad a PROTEMPA <code>ComplexAbstractionDefinition</code> instance. */ private static void addRelationships( Map<Instance, TemporalExtendedPropositionDefinition> extendedParameterCache, Instance instance, HighLevelAbstractionDefinition cad, ProtegeKnowledgeSourceBackend backend) throws KnowledgeSourceReadException { ConnectionManager cm = backend.getConnectionManager(); for (Iterator<?> itr = instance .getOwnSlotValues(instance.getKnowledgeBase().getSlot("withRelations")) .iterator(); itr.hasNext(); ) { Instance relationInstance = (Instance) itr.next(); Instance lhsExtendedParameter = (Instance) cm.getOwnSlotValue(relationInstance, cm.getSlot("lhs")); Instance rhsExtendedParameter = (Instance) cm.getOwnSlotValue(relationInstance, cm.getSlot("rhs")); Relation relation = Util.instanceToRelation(relationInstance, cm, backend); TemporalExtendedPropositionDefinition lhsEP = extendedParameterCache.get(lhsExtendedParameter); TemporalExtendedPropositionDefinition rhsEP = extendedParameterCache.get(rhsExtendedParameter); cad.setRelation(lhsEP, rhsEP, relation); } }
public void addForwardReferences() { KnowledgeBase kb = this.getKnowledgeBase(); Collection transitions = getOwnSlotValues(kb.getSlot("transitions")); Slot fromSlot = kb.getSlot(":FROM"); Slot toSlot = kb.getSlot(":TO"); Instance from = null; Instance to = null; Slot branches = kb.getSlot("branches"); Slot followed_by = kb.getSlot("followed_by"); Slot label = kb.getSlot("label"); for (Iterator transition = transitions.iterator(); transition.hasNext(); ) { Instance inst = (Instance) transition.next(); from = (Instance) inst.getOwnSlotValue(fromSlot); if (from != null) { to = (Instance) inst.getOwnSlotValue(toSlot); if (to != null) { try { if (from.hasOwnSlot(branches)) { /*logger.debug("addForwardReferences: "+ from.getOwnSlotValue(label)+ " has branches"); */ if ((from.getOwnSlotValues(branches) == null) || (!from.getOwnSlotValues(branches).contains(to))) from.addOwnSlotValue(branches, to); } else if (from.hasOwnSlot(followed_by)) { /*logger.debug("addForwardReferences: "+ from.getOwnSlotValue(label)+ " has followed by");*/ if (!(to.equals(from.getOwnSlotValue(followed_by)))) from.setOwnSlotValue(followed_by, to); } else logger.error( "addForwardReferences: " + from.getOwnSlotValue(label) + "has no followed_by or branches slot"); } catch (Exception e) { logger.error( "Exception adding " + to.getOwnSlotValue(label) + " to " + from.getOwnSlotValue(label)); } } } } }
private boolean containInstance(Instance sel, Slot slot, Instance instance) { if (itsInstance == null) return false; Collection instances = sel.getOwnSlotValues(slot); Iterator i = instances.iterator(); while (i.hasNext()) { Instance tmpInstance = (Instance) i.next(); if (tmpInstance.equals(instance)) return true; } return false; }