Package org.mindswap.pellet

Examples of org.mindswap.pellet.EdgeList$EdgeIterator


  }

  public Iterator<WME> getMatches() {
    Individual subject = initNode();
    Node object = initObjectNode();
    EdgeList edges = subject.getEdgesTo(object, role);
    return toWMEs(edges, EdgeDirection.FORWARD);
  }
View Full Code Here


        throw new InternalReasonerException( "Cannot retreive role!: " + p );
      }
    }

    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();
        }
      }
View Full Code Here

      Node node = entry.getKey();
      Set<ATermAppl> types = entry.getValue();
     
      // find the edges which the all values rule needs to be
      // 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(); ) {
View Full Code Here

   * @param node
   * @param removedTypes
   * @return
   */
  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

   * @param removedTypes
   * @param edge
   * @return
   */
  protected EdgeList findAllValues( Node node, Individual neighbor, Set<ATermAppl> removedTypes, Edge edge){
    EdgeList edges = new EdgeList();
   
    boolean applicable = false;   
    List<ATermAppl> avTypes = neighbor.getTypes( Node.ALL );
    List<ATermAppl> applicableRoles = new ArrayList<ATermAppl>();
   
    //inspect all values for a recently deleted type
    for( int i = 0; i < avTypes.size(); i++ ){
      ATermAppl avType = avTypes.get( i );
      ATermAppl role = (ATermAppl) avType.getArgument( 0 );
      ATermAppl type = (ATermAppl) avType.getArgument( 1 );
     
      //if we cannot use this edge then continue
      if( edge != null && !edge.getRole().isSubRoleOf( abox.getRole( role ) ) )
        continue;
     
      if( containsType( type, removedTypes ) ){
        applicable = true;       
        applicableRoles.add( type );
      }
    }
   
    //only proceed if necessary
    if( !applicable )
      return edges;
   
    //two cases depending on input
    if(edge == null){
      //get all edges to this node
      for( int i = 0; i < applicableRoles.size(); i++ ){
        ATerm p = applicableRoles.get( i );
        Role role = abox.getRole( p );

        edges.addEdgeList( neighbor.getRNeighborEdges( role, node ) );
      }     
    }else{
      edges.addEdge( edge );
    }
   
    return edges;
  }
View Full Code Here

    } while( x.canApply( Node.ATOM ) || x.canApply( Node.OR ) || x.canApply( Node.SOME )
        || x.canApply( Node.MIN ) );

    mayNeedExpanding.remove( 0 );

    EdgeList sortedSuccessors = x.getOutEdges().sort();
    if( PelletOptions.SEARCH_TYPE == PelletOptions.DEPTH_FIRST ) {
      for( Edge edge : sortedSuccessors ) {
        Node succ = edge.getTo();
        if( !succ.isLiteral() && !succ.equals( x ) ) {
          mayNeedExpanding.add( (Individual) succ );
        }
      }
    }
    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

   *
   * @param edgeList
   * @return
   */
  private EdgeList copyEdgeList( Individual node, boolean out) {
    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

          continue;
        }
        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;
        }
View Full Code Here

    // TODO improve this check
    Set<Role> disjoints = pred.getDisjointRoles();
    if (disjoints.isEmpty()) {
      return;
    }
    EdgeList edges = subj.getEdgesTo(obj);
    for (int i = 0, n = edges.size(); i < n; i++) {
      Edge otherEdge = edges.edgeAt(i);

      if (disjoints.contains(otherEdge.getRole())) {
        ds = ds.union(otherEdge.getDepends(), abox.doExplanation());
        ds = ds.union(pred.getExplainDisjointRole(otherEdge.getRole()), abox.doExplanation());
        abox.setClash(Clash.disjointProps(subj, ds, pred.getName(), otherEdge.getRole().getName()));
View Full Code Here

  }

  void checkReflexivitySymmetry(Individual subj, Role pred, Individual obj, DependencySet ds) {
    if (pred.isAsymmetric() && obj.hasRSuccessor(pred, subj)) {
      EdgeList edges = obj.getEdgesTo(subj, pred);
      ds = ds.union(edges.edgeAt(0).getDepends(), abox.doExplanation());
      if (PelletOptions.USE_TRACING) {
        ds = ds.union(pred.getExplainAsymmetric(), abox.doExplanation());
      }
      abox.setClash(Clash.unexplained(subj, ds, "Antisymmetric property " + pred));
    }
View Full Code Here

TOP

Related Classes of org.mindswap.pellet.EdgeList$EdgeIterator

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.