差分発生行の前後
無視リスト:
更新日時:
2016/03/15 18:40:34 (9 年 前)
更新者:
atsuko
ログメッセージ:

新クローラに対応

ファイル:
1 変更

凡例:

変更なし
追加
削除
  • SPARQLBuilderWWW2016/src/java/org/biohackathon/SPARQLBuilder/OWL/LabeledMultiDigraph.java

    r267 r273  
    1313 
    1414public class LabeledMultiDigraph { 
    15     List<List<LabeledEdge>> adjlist; 
     15    //List<List<LabeledEdge>> adjlist; 
     16    List<Map<Integer,List<LabeledEdge>>> labelededges; 
    1617    List<String> labels; 
    1718    HashMap<String,Integer> labelednodes; 
    18     List<Map<Integer,List<LabeledEdge>>> gadjlist; // grouped adj list: node, node-edge list 
     19    //List<Map<Integer,List<LabeledEdge>>> gadjlist; // grouped adj list: node, node-edge list 
    1920     
    2021    public class LabeledEdge{ 
    21         Integer node; 
     22        boolean direction; 
    2223        Object label; 
    2324         
    24         public LabeledEdge(Integer node, Object label){ 
    25             this.node = node; 
     25        public LabeledEdge(boolean dir, Object label){ 
     26            this.direction = dir; 
    2627            this.label = label; 
    2728        } 
     
    3334     
    3435    public LabeledMultiDigraph(){ 
    35         adjlist = new ArrayList<List<LabeledEdge>>(); 
     36        //adjlist = new ArrayList<List<LabeledEdge>>(); 
     37        labelededges = new ArrayList<Map<Integer,List<LabeledEdge>>>(); 
    3638        labels = new LinkedList<String>(); 
    3739        labelednodes = new HashMap<String, Integer>(); 
    38         gadjlist = new ArrayList<Map<Integer,List<LabeledEdge>>>(); 
     40        //gadjlist = new ArrayList<Map<Integer,List<LabeledEdge>>>(); 
    3941    } 
    4042     
     
    4244        labelednodes.put(label, labels.size()); 
    4345        labels.add(label); 
    44         adjlist.add(new LinkedList<LabeledEdge>()); 
    45         gadjlist.add(new HashMap<Integer, List<LabeledEdge>>()); 
     46        //adjlist.add(new LinkedList<LabeledEdge>()); 
     47        //gadjlist.add(new HashMap<Integer, List<LabeledEdge>>()); 
     48        labelededges.add(new HashMap<Integer, List<LabeledEdge>>()); 
    4649    } 
    4750     
    48     public void addEdge(Integer node1, Integer node2, Object elabel){ 
     51    public void addEdge(Integer node1, Integer node2, Object elabel){ // node 1 -> node2 
    4952        if ( labels.size() < node1 || labels.size() < node2 ){ 
    5053            System.err.println("Error for Edge Addition: No Node for the Edge"); 
    5154            return; 
    5255        } 
    53         LabeledEdge edge = new LabeledEdge(node2, elabel); 
    54         adjlist.get(node1).add(edge); 
    5556         
    56         Map<Integer, List<LabeledEdge>> edges = gadjlist.get(node1); 
    57         List<LabeledEdge> sedge = edges.get(node2); 
    58         if ( sedge == null ){ 
    59             sedge = new LinkedList<LabeledEdge>(); 
    60             edges.put(node2, sedge); 
     57        //LabeledEdge edge = new LabeledEdge(node2,elabel); 
     58        //adjlist.get(node1).add(edge); 
     59        List<LabeledEdge> edgesf = labelededges.get(node1).get(node2); 
     60        if ( edgesf == null ){ 
     61            edgesf = new LinkedList<LabeledEdge>(); 
     62            labelededges.get(node1).put(node2, edgesf); 
    6163        } 
    62         sedge.add(edge); 
     64        edgesf.add(new LabeledEdge(true, elabel)); 
     65         
     66        List<LabeledEdge> edgesr = labelededges.get(node2).get(node1); 
     67        if ( edgesr == null ){ 
     68            edgesr = new LinkedList<LabeledEdge>(); 
     69            labelededges.get(node2).put(node1, edgesr); 
     70        } 
     71        edgesr.add(new LabeledEdge(false, elabel)); 
    6372    } 
    6473}