private static HashMap<Node, Integer> outDegreeInSet(DirectedWeightedMultigraph<Node, LabeledLink> g, Set<Node> nodes, boolean includeSelfLinks) { HashMap<Node, Integer> nodeToOutDegree = new HashMap<>(); if (g == null || nodes == null) return nodeToOutDegree; for (Node n : nodes) { Set<LabeledLink> outgoingLinks = g.outgoingEdgesOf(n); if (outgoingLinks == null || outgoingLinks.isEmpty()) { nodeToOutDegree.put(n, 0); } else { int count = 0; for (LabeledLink l : outgoingLinks) { if (includeSelfLinks) { if (nodes.contains(l.getSource())) count++; } else { if (nodes.contains(l.getSource()) && !n.equals(l.getSource())) count++; } } nodeToOutDegree.put(n, count); } } return nodeToOutDegree; }
private static HashMap<Node, Integer> inDegreeInSet(DirectedWeightedMultigraph<Node, LabeledLink> g, Set<Node> nodes, boolean includeSelfLinks) { HashMap<Node, Integer> nodeToInDegree = new HashMap<>(); if (g == null || nodes == null) return nodeToInDegree; for (Node n : nodes) { Set<LabeledLink> incomingLinks = g.incomingEdgesOf(n); if (incomingLinks == null || incomingLinks.isEmpty()) { nodeToInDegree.put(n, 0); } else { int count = 0; for (LabeledLink l : incomingLinks) { if (includeSelfLinks) { if (nodes.contains(l.getSource())) count++; } else { if (nodes.contains(l.getSource()) && !n.equals(l.getSource())) count++; } } nodeToInDegree.put(n, count); } } return nodeToInDegree; }
public void savePatternLink(LabeledLink l) { String key = l.getSource().getUri() + l.getUri() + l.getTarget().getUri(); List<LabeledLink> links = this.patternLinks.get(key); if (links == null) { links = new LinkedList<>(); this.patternLinks.put(key, links); } links.add(l); }
public void printModel(DirectedWeightedMultigraph<Node, LabeledLink> model) { logger.debug("Vertices: "); for(Node n : model.vertexSet()) { logger.debug("\t" + n.getId()); } logger.debug("Edges: "); for(LabeledLink l : model.edgeSet()) { logger.debug("\t" + l.getSource().getId() + " --> " + l.getTarget().getId()); } }
if (domainLinks != null) { for (LabeledLink l : domainLinks.values()) { if (l.getSource() == null || !(l.getSource() instanceof InternalNode)) continue; steinerNodes.add(l.getSource()); for (LabeledLink link : linksForcedByUser) { if (!steinerNodes.contains(link.getSource())) steinerNodes.add(link.getSource());
private void addLinks(Set<LabeledLink> links) { if (links == null) return; for (LabeledLink link : links) { if (!this.tree.containsEdge(link) && this.tree.containsVertex(link.getSource()) && this.tree.containsVertex(link.getTarget())) { this.tree.addEdge(link.getSource(), link.getTarget(), link); } } }
private Set<String> getTriples(DirectedWeightedMultigraph<Node, LabeledLink> g, HashMap<Node,String> nodeIds, boolean ignoreSemanticTypes, boolean ignoreColumnNodes) { String separator = "|"; Set<String> triples = new HashSet<>(); if (g == null) return triples; String s, p, o, triple; for (LabeledLink l : g.edgeSet()) { if (ignoreSemanticTypes && !(l.getTarget() instanceof InternalNode)) continue; s = nodeIds.get(l.getSource()); o = nodeIds.get(l.getTarget()); p = l.getLabel().getUri(); if (ignoreColumnNodes) triple = s + separator + p; else triple = s + separator + p + separator + o; // System.out.println(triple); triples.add(triple); } return triples; }
private void mergeModels(DirectedWeightedMultigraph<Node, LabeledLink> model1, DirectedWeightedMultigraph<Node, LabeledLink> model2) { for(Node n : model1.vertexSet()) { model2.addVertex(n); for(LabeledLink link : model1.incomingEdgesOf(n)) { model2.addVertex(link.getSource()); model2.addVertex(link.getTarget()); model2.addEdge(link.getSource(), link.getTarget(), link); } } this.models.remove(model1); } }
private void addForcedLinks() { Set<LabeledLink> forcedLinks = getLinksByStatus(LinkStatus.ForcedByUser); if (forcedLinks != null) for (LabeledLink link : forcedLinks) { if (!this.steinerTree.containsEdge(link)) { if (!this.steinerTree.containsVertex(link.getSource())) { this.steinerTree.addVertex(link.getSource()); } if (!this.steinerTree.containsVertex(link.getTarget())) { this.steinerTree.addVertex(link.getTarget()); } this.steinerTree.addEdge(link.getSource(), link.getTarget(), link); } } }
Node source = link.getSource(); String property = "`" + getPropertyName(link.getLabel()) + "`"; String to = getClassName(target);
public void changeLinkStatus(LabeledLink link, LinkStatus status) { super.changeLinkStatus(link, status); if (status == LinkStatus.PreferredByUI) return; SteinerNode n1 = new SteinerNode(link.getSource().getId()); SteinerNode n2 = new SteinerNode(link.getTarget().getId()); SteinerEdge e = new SteinerEdge(n1, link.getId(), n2, (float)link.getWeight()); if (getTopKGraph().get(n2).remove(e)) { if (link instanceof LabeledLink) { e.setModelIds(((LabeledLink)link).getModelIds()); e.setForced(status == LinkStatus.ForcedByUser); } getTopKGraph().get(n2).add(e); } }
for (LabeledLink inLink : incomingLinksArr) { source = inLink.getSource(); target = inLink.getTarget();
for (LabeledLink l : forcedLinks) { if (l.getStatus() == LinkStatus.ForcedByUser) { Node source = l.getSource(); Node target = l.getTarget(); if (!this.graphBuilder.addLink(source, target, l)) {
private void setUserTypesForColumnNodes() { if (this.graph == null) return; for (Node n : this.graph.vertexSet()) { if (!(n instanceof ColumnNode)) continue; ColumnNode cn = (ColumnNode)n; Set<LabeledLink> incomingLinks = this.graph.incomingEdgesOf(n); if (incomingLinks != null) { for (LabeledLink link : incomingLinks) { Node domain = link.getSource(); SemanticType st = new SemanticType(cn.getHNodeId(), link.getLabel(), domain.getLabel(), domain.getId(), false, Origin.User, 1.0); cn.assignUserType(st); } } else logger.debug("The column node " + ((ColumnNode)n).getColumnName() + " does not have any domain or it has more than one domain."); } }
Node source = link.getSource(); Node target = link.getTarget(); DirectedWeightedMultigraph<Node, LabeledLink> sourceModel = findModel(source);