Examples of RelationshipDelta


Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

 
  /* (non-Javadoc)
   * @see edu.cmu.cs.fusion.xml.DeclarativeRetriever#retrieveRelationships(org.eclipse.core.resources.IResource, edu.cmu.cs.crystal.util.TypeHierarchy)
   */
  public void retrieveRelationships(IResource resource, TypeHierarchy tHierarchy) throws CoreException {
    delta = new RelationshipDelta();
    topLabels = new HashSet<ObjectLabel>();
    allLabels = new HashSet<ObjectLabel>();
    types = tHierarchy;
   
    resource.accept(this);
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

  private void retrieveWithSchema(File file, String schema) throws FusionTypeCheckException {
    SchemaQueries sQueries = queries.get(schema);
   
    if (sQueries != null) {
      Logger.getLogger(FusionAnalysis.FUSION_LOGGER).log(Level.WARNING, "Retrieved relationships from" + file.getName() + " with schema " + schema);
      RelationshipDelta result = sQueries.runQueries(file, types);   
      List<RelationshipDelta> list = new LinkedList<RelationshipDelta>();
      list.add(delta);
      list.add(result);
      delta = RelationshipDelta.joinAlt(list);
      topLabels.addAll(sQueries.findTopObjects(file, types));
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

  /* (non-Javadoc)
   * @see edu.cmu.cs.fusion.constraint.Effect#makeEffects(edu.cmu.cs.fusion.FusionEnvironment, edu.cmu.cs.fusion.constraint.Substitution)
   */
  public RelationshipDelta makeEffects(FusionEnvironment env,
      Substitution subs) {
    RelationshipDelta delta = new RelationshipDelta();
    SevenPointLattice effect = SevenPointLattice.TRU;
   
    //determine the effect for the test case. This variable cannot be wildcarded, so safe to acccess here.
    if (test != null) {
      ObjectLabel testLabel = subs.getSub(test);
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

      Configuration config = data.getConfiguration();
      XQConnection conn = data.getConnection();
      config.registerExtensionFunction(new TypeComparisonDefinition(types));

      for (String query : queryStrings) {
        RelationshipDelta result;
        String complete = localStr + query;
        StringReader reader = new StringReader(complete);
       
        XQPreparedExpression exp = conn.prepareExpression(reader);
        String filename = file.getAbsolutePath().replace('\\', '/');
        exp.bindString(new QName(DOC), filename, null);
       
        XQResultSequence queryResult = exp.executeQuery();
        result = processRelationshipResults(queryResult, types);
        deltas.add(result);
      }
     
    } catch (XQException e) {
      throw new FusionTypeCheckException(context.getFullyQualifiedName(), file, e);
    } catch (JavaModelException e) {
      throw new FusionTypeCheckException(context.getFullyQualifiedName(), file, e);
    } catch (XPathException e) {
      throw new FusionTypeCheckException(context.getFullyQualifiedName(), file, e);
    }
    return !deltas.isEmpty() ? RelationshipDelta.joinAlt(deltas) : new RelationshipDelta();
  }
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

  /**
   * Process the results, where results is a list of <Relationship name="??" effect="??"> with objects in them
   * @throws FusionTypeCheckException
   */
  private RelationshipDelta processRelationshipResults(XQResultSequence results, TypeHierarchy types) throws JavaModelException, XQException, FusionTypeCheckException {
    RelationshipDelta delta = new RelationshipDelta();
    while (results.next()) {
      Element relElement = (Element) results.getObject();
      String relName = relElement.getAttribute("name");
      Effect effect = Effect.valueOf(relElement.getAttribute("effect"));
      if (effect == null || effect == Effect.TEST)
        throw new FusionTypeCheckException(effect);
     
      relName = Utilities.resolveType(context, relName);
      Relation relType = relEnv.findRelation(relName);
      if (relType == null)
        throw new FusionTypeCheckException(relName);
     
      ObjectLabel[] labArr = getLabels(relElement, relType, types);
      Relationship rel = new Relationship(relType, labArr);
     
      delta.setRelationship(rel, effect == Effect.ADD ? SevenPointLattice.TRU : SevenPointLattice.FAL);
    }
    return delta;
  }
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

   
    Relationship rel = new Relationship(type, objLabels);
    ThreeValue val = env.getContext().getRelationship(rel);
   
    if (val == ThreeValue.UNKNOWN) {
      RelationshipDelta delta = env.getInferredDelta(this, sub);
     
      if (delta != null) {
        RelationshipContext newContext = env.getContext().applyChangesFromDelta(delta);
        FusionEnvironment newEnv = env.copy(newContext);
        val = getTruth(newEnv, sub);
View Full Code Here

Examples of edu.cmu.cs.fusion.relationship.RelationshipDelta

    inference = new InferenceEnvironment(null);
    continuation = ConsList.empty();
  }

  public RelationshipDelta getInferredDelta(RelationshipPredicate rel, Substitution sub) {
    RelationshipDelta delta;
   
    if (variant != Variant.PRAGMATIC_VARIANT)
      return null;

    //check to see if we've looked for this relationship before with our existing continuation...
    if (alreadyLookingForRel(rel, sub))
      return null;
   
    continuation = ConsList.cons(new Pair<RelationshipPredicate, Substitution>(rel, sub), continuation);
   
    for (InferredRel inf : inference) { 
      //first, find out what substitutions are needed to make rel. There might
      //be more than one if more than one effect could be the one to use.
      List<Substitution> subs = inf.canProduce(rel, sub);
     
      for (Substitution partSub : subs) {
        //bind up the rest of the variables that we need
        List<Substitution> finalSubs = this.allValidSubs(partSub, inf.getFreeVars());
        //and then only look at definite ones (we want true/falses, not unknowns!)
       
        for (Substitution finalSub : finalSubs) {
          ThreeValue val = inf.getPredicate().getTruth(this, finalSub);
         
          if (val != ThreeValue.TRUE)
            continue;
         
          //ok, see if this conflicts with what we have
          delta = new RelationshipDelta();
          for (Effect effect : inf.getEffects())
            delta.override(effect.makeEffects(this, finalSub));
         
          //if it doesn't conflict AND it makes some change, return it!
          if (delta.isStrictlyMorePrecise(context)) {
            continuation = continuation.tl();
            return delta;
          }
        }
      }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.