public DirectedWeightedMultigraph<Node, DefaultLink> getGraph() { return this.graphBuilder.getGraph(); }
private GraphBuilder cloneGraphBuilder(GraphBuilder graphBuilder) { GraphBuilder clonedGraphBuilder = null; if (graphBuilder == null || graphBuilder.getGraph() == null) { clonedGraphBuilder = new GraphBuilderTopK(this.ontologyManager, false); } else { clonedGraphBuilder = new GraphBuilderTopK(this.ontologyManager, graphBuilder.getGraph()); } return clonedGraphBuilder; }
public boolean isEmpty() { return (this.graphBuilder.getGraph().edgeSet().isEmpty() || this.steinerTree == null); }
public Set<Node> getGraphNodes() { return this.graphBuilder.getGraph().vertexSet(); }
private GraphBuilder cloneGraphBuilder(GraphBuilder graphBuilder) { GraphBuilder clonedGraphBuilder = null; if (graphBuilder == null || graphBuilder.getGraph() == null) { clonedGraphBuilder = new GraphBuilder(this.ontologyManager, false); } else { clonedGraphBuilder = new GraphBuilder(this.ontologyManager, graphBuilder.getGraph(), false); } this.nodeIdFactory = clonedGraphBuilder.getNodeIdFactory(); return clonedGraphBuilder; }
public List<LabeledLink> getIncomingLinks(String nodeId) { List<LabeledLink> incomingLinks = new LinkedList<>(); Node node = this.getIdToNodeMap().get(nodeId); if (node == null) return incomingLinks; Set<DefaultLink> allIncomingLinks = this.getGraph().incomingEdgesOf(node); if (allIncomingLinks != null) { for (DefaultLink l : allIncomingLinks) { if (l instanceof LabeledLink) { incomingLinks.add((LabeledLink)l); } } } return incomingLinks; }
public List<LabeledLink> getOutgoingLinks(String nodeId) { List<LabeledLink> outgoingLinks = new LinkedList<>(); Node node = this.getIdToNodeMap().get(nodeId); if (node == null) return outgoingLinks; Set<DefaultLink> allOutgoingLinks = this.getGraph().outgoingEdgesOf(node); if (allOutgoingLinks != null) { for (DefaultLink l : allOutgoingLinks) { if (l instanceof LabeledLink) { outgoingLinks.add((LabeledLink)l); } } } return outgoingLinks; }
public void exportJson() { try { GraphUtil.exportJson(this.graphBuilder.getGraph(), getGraphJsonName(), true, true); } catch (Exception e) { logger.error("error in exporting the alignment graph to json!"); } }
public void exportGraphviz() { try { GraphVizUtil.exportJGraphToGraphviz(this.graphBuilder.getGraph(), "main graph", true, GraphVizLabelType.LocalId, GraphVizLabelType.LocalUri, false, true, getGraphGraphvizName()); } catch (Exception e) { logger.error("error in exporting the alignment graph to graphviz!"); } }
public GraphBuilder getGraphBuilderClone() { GraphBuilder clonedGraphBuilder = null; if (this instanceof ModelLearningGraphSparse) { clonedGraphBuilder = new GraphBuilder(this.ontologyManager, this.getGraphBuilder().getGraph(), false); } else if (this instanceof ModelLearningGraphCompact) { clonedGraphBuilder = new GraphBuilderTopK(this.ontologyManager, this.getGraphBuilder().getGraph()); } return clonedGraphBuilder; }
public List<LabeledLink> getLinks(String sourceId, String targetId) { List<LabeledLink> links = new LinkedList<>(); Node source = this.getIdToNodeMap().get(sourceId); if (source == null) return links; Node target = this.getIdToNodeMap().get(targetId); if (target == null) return links; Set<DefaultLink> allLinks = this.getGraph().getAllEdges(source, target); if (allLinks != null) { for (DefaultLink l : allLinks) { if (l instanceof LabeledLink) { links.add((LabeledLink)l); } } } return links; }
protected ModelLearningGraph(OntologyManager ontologyManager, ModelLearningGraphType type) throws IOException { this.ontologyManager = ontologyManager; this.totalNumberOfKnownModels = 0; File file = new File(getGraphJsonName()); if (!file.exists()) { this.initializeFromJsonRepository(); } else { logger.info("loading the alignment graph ..."); DirectedWeightedMultigraph<Node, DefaultLink> graph = GraphUtil.importJson(getGraphJsonName()); if (type == ModelLearningGraphType.Compact) this.graphBuilder = new GraphBuilderTopK(ontologyManager, graph); else this.graphBuilder = new GraphBuilder(ontologyManager, graph, false); this.nodeIdFactory = this.graphBuilder.getNodeIdFactory(); logger.info("loading is done!"); } if (this.graphBuilder.getGraph() != null) { logger.info("number of nodes: " + this.graphBuilder.getGraph().vertexSet().size()); logger.info("number of links: " + this.graphBuilder.getGraph().edgeSet().size()); } this.lastUpdateTime = System.currentTimeMillis(); }
private DirectedWeightedMultigraph<Node, LabeledLink> computeSteinerTree(Set<Node> steinerNodes) { if (steinerNodes == null || steinerNodes.isEmpty()) { logger.error("There is no steiner node."); return null; } // System.out.println(steinerNodes.size()); List<Node> steinerNodeList = new ArrayList<>(steinerNodes); long start = System.currentTimeMillis(); UndirectedGraph<Node, DefaultLink> undirectedGraph = new AsUndirectedGraph<>(this.graphBuilder.getGraph()); logger.debug("computing steiner tree ..."); SteinerTree steinerTree = new SteinerTree(undirectedGraph, steinerNodeList); DirectedWeightedMultigraph<Node, LabeledLink> tree = new TreePostProcess(this.graphBuilder, steinerTree.getDefaultSteinerTree(), null, false).getTree(); //(DirectedWeightedMultigraph<Node, LabeledLink>)GraphUtil.asDirectedGraph(steinerTree.getDefaultSteinerTree()); logger.debug(GraphUtil.labeledGraphToString(tree)); long steinerTreeElapsedTimeMillis = System.currentTimeMillis() - start; logger.debug("total number of nodes in steiner tree: " + tree.vertexSet().size()); logger.debug("total number of edges in steiner tree: " + tree.edgeSet().size()); logger.debug("time to compute steiner tree: " + (steinerTreeElapsedTimeMillis/1000F)); return tree; // long finalTreeElapsedTimeMillis = System.currentTimeMillis() - steinerTreeElapsedTimeMillis; // DirectedWeightedMultigraph<Node, Link> finalTree = buildOutputTree(tree); // logger.info("time to build final tree: " + (finalTreeElapsedTimeMillis/1000F)); // GraphUtil.printGraph(finalTree); // return finalTree; }
GraphUtil.getDomainLinks(this.graphBuilder.getGraph(), n, n.getUserSemanticTypes()); if (domainLinks != null) { for (LabeledLink l : domainLinks.values()) {
public boolean contains(DirectedWeightedMultigraph<Node, LabeledLink> graph) { if (graph == null || this.graphBuilder == null || this.graphBuilder.getGraph() == null) return false; Set<String> commonModelIds = null; LabeledLink matchedLink = null; boolean firstVisit = true; for (LabeledLink l : graph.edgeSet()) { matchedLink = this.graphBuilder.getIdToLinkMap().get(l.getId()); if (matchedLink == null) return false; if (firstVisit) { commonModelIds = matchedLink.getModelIds(); firstVisit = false; } else { if (commonModelIds == null || matchedLink.getModelIds() == null) return false; commonModelIds = Sets.intersection(matchedLink.getModelIds(), commonModelIds); if (commonModelIds.isEmpty()) // no intersection return false; } } return true; } }
logger.info("graph nodes: " + this.graphBuilder.getGraph().vertexSet().size()); logger.info("graph links: " + this.graphBuilder.getGraph().edgeSet().size()); new AsUndirectedGraph<>(this.graphBuilder.getGraph()), Lists.newLinkedList(sn.getNodes())); WeightedMultigraph<Node, DefaultLink> t = steinerTree.getDefaultSteinerTree(); TreePostProcess treePostProcess = new TreePostProcess(this.graphBuilder, t);