Package org.mindswap.pellet

Examples of org.mindswap.pellet.Edge


    // which is blockable and has successor x
    // (so y is an inv(r) predecessor of x)
    boolean apply = false;
    EdgeList edges = x.getRPredecessorEdges(r.getInverse());
    for (int e = 0; e < edges.size(); e++) {
      Edge edge = edges.edgeAt(e);
      Individual pred = edge.getFrom();
      if (pred.isBlockable()) {
        apply = true;
        break;
      }
    }
    if (!apply)
      return;

    if (x.getMaxCard(r) < n)
      return;

    if (x.hasDistinctRNeighborsForMin(r, n, ATermUtils.TOP, true))
      return;

    // if( n == 1 ) {
    // throw new InternalReasonerException(
    // "Functional rule should have been applied " +
    // x + " " + x.isNominal() + " " + edges);
    // }

    int guessMin = x.getMinCard(r, c);
    if (guessMin == 0)
      guessMin = 1;

    // TODO not clear what the correct ds is so be pessimistic and include everything
    DependencySet ds = x.getDepends(mc);
    edges = x.getRNeighborEdges(r);
    for (int e = 0; e < edges.size(); e++) {
      Edge edge = edges.edgeAt(e);
      ds = ds.union(edge.getDepends(), strategy.getABox().doExplanation());
    }

    GuessBranch newBranch = new GuessBranch(strategy.getABox(), strategy, x, r, guessMin, n, c, ds);
    strategy.addBranch(newBranch);
View Full Code Here


      partialBindings.add(binding);
    }

  @Override
  public Edge addEdge(Individual subj, Role pred, Node obj, DependencySet ds) {
    Edge edge = super.addEdge( subj, pred, obj, ds );

    if( edge != null && !abox.isClosed() && subj.isRootNominal() && obj.isRootNominal() ) {
      if( interpreter != null ) {
        interpreter.alphaNet.activateEdge(edge);
      }
View Full Code Here

    }

    public DependencySet check(Individual node1, Node node2) {
      EdgeList list = node1.getRNeighborEdges( r );
      for( int i = 0, n = list.size(); i < n; i++ ) {
        Edge edge = list.edgeAt( i );
        if( edge.getNeighbor( node1 ).equals( node2 ) ) {
          return edge.getDepends();
        }
      }

      return null;
    }
View Full Code Here

      // re-applied to
      EdgeList av = findAllValues( node, types );
     
      //apply the all values rules
      for(int i = 0; i < av.size(); i++){
        Edge e = av.edgeAt( i );           
        allValuesRule.applyAllValues( e.getFrom(), e.getRole(), e.getTo(), e.getDepends() );
      }
    }
   
    for( Iterator<Node> i = tracker.unprunedNodes(); i.hasNext(); ) {
      Node node = i.next();
     
      if( node instanceof Individual ){
        Individual ind = (Individual)node;
        //reset type pointers
        for( int j = 0; j < Node.TYPES; j++ )
          ind.applyNext[j] = 0;
       
        //add to all queues
        abox.getCompletionQueue().add( new QueueElement( ind ) );
       
        allValuesRule.apply( ind );
       
        //get out edges
        for( int j = 0; j < ind.getOutEdges().size(); j++ ){
          Edge e = ind.getOutEdges().edgeAt( j );
         
          Node obj = e.getTo();
          if( obj instanceof Individual ){
            Individual objInd = (Individual)obj;
            objInd.applyNext[Node.ALL] = 0;
            allValuesRule.apply( objInd );
          }
        }
      }
           
      //get out edges
      for( int j = 0; j < node.getInEdges().size(); j++ ){
        Edge e = node.getInEdges().edgeAt( j );
        Individual subj= e.getFrom();
        subj.applyNext[Node.ALL] = 0;
        allValuesRule.apply( subj );
      }
    }   
  }
View Full Code Here

  protected EdgeList findAllValues( Node node, Set<ATermAppl> removedTypes){
    EdgeList edges = new EdgeList();
   
    //handle in edges
    for(int i = 0; i < node.getInEdges().size(); i++){
      Edge e = node.getInEdges().edgeAt( i );
     
      edges.addEdgeList( findAllValues( node, e.getFrom(), removedTypes, e ) );
    }
   
   
    if( node instanceof Individual ){
      Individual ind = (Individual)node;     
     
      //handle in edges
      for(int i = 0; i < ind.getOutEdges().size(); i++){
        Edge e = ind.getOutEdges().edgeAt( i );
        Node to = e.getTo();
       
        Role inv = e.getRole().getInverse();
       
        if(inv != null && to instanceof Individual)
          edges.addEdgeList( findAllValues( ind, (Individual)to, removedTypes, new DefaultEdge( inv, (Individual)to, ind, e.getDepends() ) ) ) ;
      }
    }
   
   
    return edges;
View Full Code Here

        }
      }
    }
    else {
      for( int i = sortedSuccessors.size() - 1; i >= 0; i-- ) {
        Edge edge = sortedSuccessors.edgeAt( i );
        Node succ = edge.getTo();
        if( !succ.isLiteral() && !succ.equals( x ) ) {
          mayNeedExpanding.add( (Individual) succ );
        }
      }
    }
View Full Code Here

  /**
   * {@inheritDoc}
   */
  public boolean isSafe(ATermAppl c, Individual ind) {
    Edge parentEdge = getParentEdge( ind );
    Role r = parentEdge.getRole();
    Individual parent = parentEdge.getFrom();
   
    ABox abox = parent.getABox();

    if( !isParentSafe( abox.getKB(), r, parent ) )
      return false;
View Full Code Here

    return true;
  }

  protected Edge getParentEdge(Individual ind) {
    Edge result = null;
    Role role = null;
    Individual parent = ind.getParent();
    for( Edge e : ind.getInEdges() ) {
      if( e.getFrom().equals( parent ) ) {
        if( role == null ) {
View Full Code Here

    EdgeList edgeList = out
      ? node.getOutEdges()
      : node.getInEdges();
    EdgeList cachedEdges = new EdgeList( edgeList.size() );
    for( Edge edge : edgeList ) {
      Edge cachedEdge = out
        ? new CachedOutEdge( edge )
        : new CachedInEdge( edge );
      cachedEdges.addEdge( cachedEdge );
     
      if( PelletOptions.CHECK_NOMINAL_EDGES ) {
        Node neighbor = edge.getNeighbor( node );
        Map<Node,DependencySet> mergedNodes = neighbor.getAllMerged();
          DependencySet edgeDepends = edge.getDepends();
          for( Entry<Node,DependencySet> entry : mergedNodes.entrySet() ) {
            Node mergedNode = entry.getKey();
            if( mergedNode.isRootNominal() && !mergedNode.equals( neighbor ) ) {
              Role r = edge.getRole();
              ATermAppl n = mergedNode.getName();
              DependencySet ds = edgeDepends.union( entry.getValue(), false ).cache();
              Edge e = out
                ? new CachedOutEdge( r, n, ds )
                : new CachedInEdge( r, n, ds );
              cachedEdges.addEdge( e );
            }
          }
View Full Code Here

        selfRule.apply(n);

        // CHW-added for inc. queue must see if this is bad
        EdgeList allEdges = n.getOutEdges();
        for (int e = 0; e < allEdges.size(); e++) {
          Edge edge = allEdges.edgeAt(e);
          if (edge.getTo().isPruned()) {
            continue;
          }

          applyPropertyRestrictions(edge);
          if (n.isMerged()) {
            break;
          }
        }

      }

      return;
    }

    if (log.isLoggable(Level.FINE)) {
      log.fine("Initialize started");
    }

    abox.setBranch(0);

    mergeList.addAll(abox.getToBeMerged());

    if (!mergeList.isEmpty()) {
      mergeAll();
    }

    Role topRole = abox.getRole(TOP_OBJECT_PROPERTY);
    Iterator<Individual> i = getInitializeIterator();
    while (i.hasNext()) {
      Individual n = i.next();

      if (n.isMerged()) {
        continue;
      }

      applyUniversalRestrictions(n);
      if (n.isMerged()) {
        continue;
      }

      selfRule.apply(n);
      if (n.isMerged()) {
        continue;
      }

      EdgeList allEdges = n.getOutEdges();
      for (int e = 0; e < allEdges.size(); e++) {
        Edge edge = allEdges.edgeAt(e);

        if (edge.getTo().isPruned()) {
          continue;
        }

        applyPropertyRestrictions(edge);
View Full Code Here

TOP

Related Classes of org.mindswap.pellet.Edge

Copyright © 2018 www.massapicom. 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.