/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.biohackathon.SPARQLBuilder.OWL; /** * * @author atsuko */ import java.util.*; public class OWLClassGraph extends LabeledMultiDigraph{ String startClass; String endClass; int startNode; int endNode; int nsteps; int limit; List allOWLEdge; public class OWLEdge{ String startClass; ClassLink classLink; public OWLEdge(String startClass, ClassLink classLink){ this.startClass = startClass; this.classLink = classLink; } } public class LinkAndPath{ ClassLink classLink; List path; public LinkAndPath(ClassLink classLink, List path){ this.classLink = classLink; this.path = path; } } public OWLClassGraph(String p_startClass, String p_endClass){ super(); startClass = p_startClass; adjlist.add(new LinkedList()); labels.add(startClass); endClass = p_endClass; labels.add(endClass); nsteps = 3; limit = 100; allOWLEdge= new LinkedList(); } public void generateGraph(){ // atode } public Path[] getPaths(OWLQueryBuilderImpl qb){ List> paths = searchPathsFromOWL(qb); Path[] patharray = new Path[paths.size()]; ListIterator> pit = paths.listIterator(); int i = 0; while ( pit.hasNext() ){ patharray[i].setStartClass(startClass); List path = pit.next(); path.remove(0); patharray[i].setClassLinks(path); i++; } return patharray; } private List> searchPathsFromOWL(OWLQueryBuilderImpl qb){ List> paths = new ArrayList>(); ClassLink crrLink = new ClassLink(null,startClass,Direction.both); List lp = new LinkedList(); lp.add(new LinkAndPath(crrLink, new LinkedList())); try{ for ( int i = 0; i < nsteps; i++ ){ ListIterator lit = lp.listIterator(); List nextlp = new LinkedList(); while ( lit.hasNext() ){ LinkAndPath crrlp = lit.next(); if ( crrlp.classLink.getLinkedClassURI().equals(endClass) ){ continue; } ClassLink[] classLinks = qb.getNextClass(null, crrlp.classLink.getLinkedClassURI(), limit); for ( int j = 0 ; j < classLinks.length; j++ ){ List crrpath = new LinkedList(crrlp.path); crrpath.add(classLinks[j]); if ( classLinks[j].getLinkedClassURI().equals(endClass) ){ paths.add(new LinkedList(crrpath)); } nextlp.add(new LinkAndPath(classLinks[j],crrpath)); } } } }catch(Exception e){ System.err.println(e);} return paths; } }