public void print() { logger.info("id: " + this.getId()); logger.info("name: " + this.getName()); logger.info("description: " + this.getDescription()); logger.info(GraphUtil.labeledGraphToString(this.graph)); }
private boolean cycleExits(DirectedWeightedMultigraph<Node, LabeledLink> model, Set<Node> columnNodes, Set<Node> traversedNodes, Node start, Node end) { Set<Node> neighbors = GraphUtil.getOutNeighbors(GraphUtil.asDefaultGraph(model), start); logger.debug("start:" + start.getDisplayId() + ", end:" + end.getDisplayId()); for (Node w : neighbors) { if(w == end) { return true; } if(columnNodes.contains(w) || traversedNodes.contains(w)) continue; traversedNodes.add(w); logger.debug("neighbour:" + w.getDisplayId()); boolean innerCycle = cycleExits(model, columnNodes, traversedNodes, w, end); if(innerCycle) return true; } return false; }
public TreePostProcess( GraphBuilder graphBuilder, UndirectedGraph<Node, DefaultLink> tree) { this.graphBuilder = graphBuilder; this.tree = (DirectedWeightedMultigraph<Node, DefaultLink>)GraphUtil.asDirectedGraph(tree); buildOutputTree(false); }
public Set<LabeledLink> getOutgoingEdgesOf(Node node) { Set<LabeledLink> edges = new HashSet<>(); for(DirectedWeightedMultigraph<Node, LabeledLink> model : models) { GraphUtil.printGraph(GraphUtil.asDefaultGraph(model)); if(model.containsVertex(node)) edges.addAll(model.outgoingEdgesOf(node)); } return edges; }
String pathStr; for (int i = 1; i <= maxLength; i++) { gpList = GraphUtil.getPaths(GraphUtil.asDefaultGraph(baseModel.graph), i); if (gpList != null) basePaths.addAll(gpList); gpList = GraphUtil.getPaths(GraphUtil.asDefaultGraph(this.graph), i); if (gpList != null) modelPaths.addAll(gpList);
logger.debug(GraphUtil.defaultGraphToString(tree)); TreePostProcess treePostProcess = new TreePostProcess(this.graphBuilder, tree, getLinksByStatus(LinkStatus.ForcedByUser), true); logger.debug(GraphUtil.labeledGraphToString(this.steinerTree));
else GraphUtil.writeGraph(GraphUtil.asDefaultGraph(this.graph), writer, false, false);
graph = GraphUtil.readGraph(reader); } else { reader.skipValue(); SemanticModel semanticModel = new SemanticModel(id, GraphUtil.asLabeledGraph(graph), sourceColumns, mappingToSourceColumns); semanticModel.setName(name); semanticModel.setDescription(description);
for(Entry<String,SemanticModel> entry : models.entrySet()) { if (entry.getKey() == "1-correct model") { cluster = GraphVizUtil.convertToGraphviz(GraphUtil.asDefaultGraph(entry.getValue().getGraph()), entry.getValue().getMappingToSourceColumns(), false, nodeLabelType, linkLabelType, false, false); } else { cluster = GraphVizUtil.convertToGraphviz(GraphUtil.asDefaultGraph(entry.getValue().getGraph()), entry.getValue().getMappingToSourceColumns(), false, nodeLabelType, linkLabelType, showNodeMetaData, showLinkMetaData);
DirectedWeightedMultigraph<Node, DefaultLink> graph = GraphUtil.importJson(graphName); modelLearner.graphBuilder = new GraphBuilder(ontologyManager, graph, false); modelLearner.nodeIdFactory = modelLearner.graphBuilder.getNodeIdFactory(); GraphUtil.exportJson(modelLearningGraph.getGraphBuilder().getGraph(), graphName, true, true); } catch (Exception e) { e.printStackTrace();
for (Node n : model.getGraph().vertexSet()) { if (n instanceof ColumnNode) { Set<LabeledLink> domainLinks = GraphUtil.getDomainLinksInLabeledGraph(model.getGraph(), (ColumnNode)n); if (domainLinks == null || domainLinks.isEmpty()) continue; matches.add(cn); graphNodeDomains.put(cn, GraphUtil.getDomainLinksInDefaultGraph(this.graphBuilder.getGraph(), (ColumnNode)cn)); matches.add(newNode); graphNodeDomains.put(newNode, GraphUtil.getDomainLinksInDefaultGraph(this.graphBuilder.getGraph(), (ColumnNode)newNode));
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 WeightedMultigraph<Node, LabeledLink> getLabeledSteinerTree() { return GraphUtil.asLabeledGraph(this.tree); }
GraphUtil.getDomainLinks(this.graphBuilder.getGraph(), n, n.getUserSemanticTypes()); if (domainLinks != null) { for (LabeledLink l : domainLinks.values()) {
if (n instanceof ColumnNode) { ColumnNode c = (ColumnNode)n; Set<LabeledLink> domainLinks = GraphUtil.getDomainLinksInLabeledGraph(model.getGraph(), (ColumnNode)n); if (domainLinks == null || domainLinks.isEmpty()) continue;
private void learnFromKnownSemanticModels() { List<Node> steinerNodes = this.computeSteinerNodes(); if (steinerNodes == null || steinerNodes.isEmpty()) { return; } ModelLearner modelLearner = new ModelLearner(this.graphBuilder, steinerNodes); SemanticModel model = modelLearner.getModel(); if (model == null) { logger.error("could not learn any model for this source!"); if (this.steinerTree == null) { this.steinerTree = new DirectedWeightedMultigraph<>(LabeledLink.class); } this.addForcedNodes(); this.addForcedLinks(); //add new semantic type to the tree // this.removeDeletedLinks(); this.root = TreePostProcess.selectRoot(GraphUtil.asDefaultGraph(this.steinerTree)); return ; } this.updateAlignment(model, null); }
GraphUtil.exportJson(ml.getGraphBuilder().getGraph(), graphName, true, true); GraphVizUtil.exportJGraphToGraphviz(ml.getGraphBuilder().getGraph(), "main graph",
public DirectedWeightedMultigraph<Node, LabeledLink> getTree() { return (DirectedWeightedMultigraph<Node, LabeledLink>)GraphUtil.asLabeledGraph(this.tree); }
GraphUtil.getDomainLinks(this.graphBuilder.getGraph(), cn, cn.getUserSemanticTypes()); if (domainLinks != null && !domainLinks.isEmpty()) { for (SemanticType st : cn.getUserSemanticTypes()) {
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; }