writer.name("hNodeId").value(cn.getHNodeId()); writer.name("columnName").value(cn.getColumnName()); writer.name("rdfLiteralType"); if (cn.getRdfLiteralType() == null) writer.value(nullStr); else writeLabel(writer, cn.getRdfLiteralType()); if(cn.getLanguage() == null) writer.name("language").value(nullStr); else writer.name("language").value(cn.getLanguage()); writer.name("userSemanticTypes"); if (cn.getUserSemanticTypes() == null) writer.value(nullStr); else { writer.beginArray(); for (SemanticType semanticType : cn.getUserSemanticTypes()) writeSemanticType(writer, semanticType); writer.endArray(); if (cn.getLearnedSemanticTypes() == null) writer.value(nullStr); else { writer.beginArray(); for (SemanticType semanticType : cn.getLearnedSemanticTypes()) writeSemanticType(writer, semanticType); writer.endArray();
private void writeSourceColumn(JsonWriter writer, ColumnNode sourceColumn) throws IOException { if (sourceColumn == null) return; writer.beginObject(); writer.name("id").value(sourceColumn.getId()); writer.name("hNodeId").value(sourceColumn.getHNodeId()); writer.name("columnName").value(sourceColumn.getColumnName()); writer.endObject(); }
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."); } }
public ColumnNode(String id, String hNodeId, String columnName, Label rdfLiteralType, String language) { super(id, new Label(hNodeId), NodeType.ColumnNode); this.hNodeId = hNodeId; this.columnName = columnName; this.setRdfLiteralType(rdfLiteralType); this.setLanguage(language); this.userSemanticTypes = null; this.learnedSemanticTypes = null; this.semanticTypeStatus = ColumnSemanticTypeStatus.NotAssigned; }
int numberOfAttributesWhoseTypeIsInCRFTypes = 0; for (ColumnNode cn : columnNodes) { List<SemanticType> userSemanticTypes = cn.getUserSemanticTypes(); List<SemanticType> top4Suggestions = cn.getTopKLearnedSemanticTypes(4);
columnNode.setRdfLiteralType(rdfLiteralType); columnNode.setLanguage(language); columnNode.unassignUserTypes(); List<LabeledLink> columnNodeIncomingLinks = alignment.getGraphBuilder().getIncomingLinks(columnNode.getId()); if (columnNodeIncomingLinks != null) { for(LabeledLink oldIncomingLinkToColumnNode : columnNodeIncomingLinks) { SemanticType.Origin.User, 1.0); List<SemanticType> userSemanticTypes = columnNode.getUserSemanticTypes(); boolean duplicateSemanticType = false; if (userSemanticTypes != null) { columnNode.assignUserType(newType); alignment.align(); else if (modelingConfiguration.getPredictOnApplyHistory()) { if (columnNode.getLearnedSemanticTypes() == null) { columnNode.setLearnedSemanticTypes( new SemanticTypeUtil().getColumnSemanticSuggestions(workspace, worksheet, columnNode, 4, selection)); if (columnNode.getLearnedSemanticTypes().isEmpty()) { logger.info("no semantic type learned for the column " + hNodeId);
ColumnNode newNode = new ColumnNode(new RandomGUID().toString(), c.getHNodeId(), c.getColumnName(), c.getRdfLiteralType(), c.getLanguage()); if (this.graphBuilder.addNode(newNode)) { columnNodeMapping.put(n, newNode);
ColumnNode target = new ColumnNode(nodeId, nodeId, sourceColumn.getColumnName(), null, null); if (!this.graphBuilder.addNode(target)) return null; addedNodes.add(target); String linkId = LinkIdFactory.getLinkId(propertyUri, source.getId(), target.getId()); LabeledLink link; if (propertyUri.equalsIgnoreCase(ClassInstanceLink.getFixedLabel().getUri()))
for (Node node : nodes) { if (node instanceof ColumnNode) { columnNodes.put(((ColumnNode) node).getHNodeId(), (ColumnNode) node); anchorObj = getForceLayoutColumnJsonObject(columnNum, hNode.getColumnName(), node.getLabel().getRdfsLabel(), node.getLabel().getRdfsComment(), node.getId(), node.getType().name(), node.isForced(), hNodeId, node.getUri(), columnNum); } else {
private void writeMappingToSourceColumn(JsonWriter writer, Entry<ColumnNode, ColumnNode> mapping) throws IOException { if (mapping == null || mapping.getKey() == null || mapping.getValue() == null) return; writer.beginObject(); writer.name("id").value(mapping.getKey().getId()); writer.name("sourceColumnId").value(mapping.getValue().getId()); writer.endObject(); }
private Map<String, ColumnNode> createColumnNodeMap() { Set<Node> alignmentColumnNodes = alignment.getNodesByType(NodeType.ColumnNode); Map<String, ColumnNode> hNodeIdToColumnNodeMap = new HashMap<>(); if (alignmentColumnNodes == null) return hNodeIdToColumnNodeMap; for (Node cNode : alignmentColumnNodes) { ColumnNode columnNode = (ColumnNode) cNode; hNodeIdToColumnNodeMap.put(columnNode.getHNodeId(), columnNode); } return hNodeIdToColumnNodeMap; }
ColumnNode columnNode = alignment.getColumnNodeByHNodeId(hNode.getId()); List<LabeledLink> columnNodeIncomingLinks = alignment.getGraphBuilder().getIncomingLinks(columnNode.getId()); if (columnNodeIncomingLinks == null || columnNodeIncomingLinks.isEmpty()) { // SemanticType not yet assigned Label propertyLabel = new Label(ns + columnName, ns, "karma"); worksheet.getSemanticTypes().addType(type); List<SemanticType> userSemanticTypes = columnNode.getUserSemanticTypes(); boolean duplicateSemanticType = false; if (userSemanticTypes != null) { columnNode.assignUserType(type); } else {
Node specializedEdgeTarget = specializedEdge.getTarget(); if (specializedEdgeTarget instanceof ColumnNode) { String columnName = translator.getColumnNameForHNodeId(((ColumnNode) specializedEdgeTarget).getHNodeId()); ColumnTemplateTerm cnTerm = new ColumnTemplateTerm(columnName); String hNodeId = cnode.getHNodeId(); String columnName = translator.getColumnNameForHNodeId(hNodeId); ColumnTemplateTerm cnTerm = new ColumnTemplateTerm(columnName); hNodeId, cnTerm); String rdfLiteralUri = cnode.getRdfLiteralType() == null? "" : cnode.getRdfLiteralType().getUri(); StringTemplateTerm rdfLiteralTypeTerm = new StringTemplateTerm(rdfLiteralUri, true); TemplateTermSet rdfLiteralTypeTermSet = new TemplateTermSet(); rdfLiteralTypeTermSet.addTemplateTermToSet(rdfLiteralTypeTerm); String language = cnode.getLanguage(); StringTemplateTerm languageTerm = new StringTemplateTerm(language, false); TemplateTermSet languageTermSet = new TemplateTermSet(); Node specializedEdgeTarget = specializedEdge.getTarget(); if (specializedEdgeTarget instanceof ColumnNode) { String targetColumnName = translator.getColumnNameForHNodeId(((ColumnNode) specializedEdgeTarget).getHNodeId()); ColumnTemplateTerm cnsplTerm = new ColumnTemplateTerm(targetColumnName);
continue; candidateSemanticTypes = cn.getTopKLearnedSemanticTypes(numberOfCandidates); columnSemanticTypes.put(cn, candidateSemanticTypes); if (candidateSemanticTypes == null) continue; logger.info("===== Column: " + cn.getColumnName()); if (cn.getSemanticTypeStatus() == ColumnSemanticTypeStatus.UserAssigned) { HashMap<SemanticType, LabeledLink> domainLinks = GraphUtil.getDomainLinks(this.graphBuilder.getGraph(), cn, cn.getUserSemanticTypes()); if (domainLinks != null && !domainLinks.isEmpty()) { for (SemanticType st : cn.getUserSemanticTypes()) { semanticTypeMappings = new HashSet<>(); LabeledLink domainLink = domainLinks.get(st); logger.debug("number of matches for column " + cn.getColumnName() + ": " + (semanticTypeMappings == null ? 0 : semanticTypeMappings.size())); numOfMappings *= (semanticTypeMappings == null || semanticTypeMappings.isEmpty() ? 1 : semanticTypeMappings.size());
public ArrayList<SemanticType> getColumnSemanticSuggestions(Workspace workspace, Worksheet worksheet, ColumnNode columnNode, int numSuggestions, SuperSelection sel) { ArrayList<SemanticType> suggestedSemanticTypes = new ArrayList<>(); logger.info("Column Semantic Suggestions for:" + columnNode.getColumnName()); if(workspace != null && worksheet != null) { OntologyManager ontologyManager = workspace.getOntologyManager(); String hNodeId = columnNode.getHNodeId(); SemanticTypeColumnModel columnModel = predictColumnSemanticType(workspace, worksheet, hNodeId, numSuggestions, sel);
n = new InternalNode(id, label); } else if (type == NodeType.ColumnNode) { n = new ColumnNode(id, hNodeId, columnName, rdfLiteralType, language); if (userSemanticTypes == null && userSelectedSemanticType != null) { userSemanticTypes = new ArrayList<>(); ((ColumnNode)n).assignUserType(st); ((ColumnNode)n).setLearnedSemanticTypes(learnedSemanticTypes); } else if (type == NodeType.LiteralNode) { n = new LiteralNode(id, value, datatype, language, isUri);
if (v instanceof ColumnNode) { ColumnNode cNode = (ColumnNode) v; hNodeIdsCoveredByVertex.put(cNode.getHNodeId()); hNodeId = cNode.getHNodeId(); hNodeIdsAdded.add(cNode.getHNodeId()); hNodeIdsCoveredByVertex_holder.put(cNode.getHNodeId()); NodeType.ColumnNode.name(), 0, false, hNodeIdsCoveredByVertex_holder, cNode.getHNodeId(), cNode.getLabel().getUri(), false); .getHNodeId(); JSONArray hNodeIdsCoveredByVertex_holder_2 = new JSONArray(); hNodeIdsCoveredByVertex_holder_2.put(endHNodeId); ColumnNode cNode = (ColumnNode) v; hNodeIdsCoveredByVertex_holder.put(cNode .getHNodeId()); .getHNodeId(); JSONArray hNodeIdsCoveredByVertex_holder_2 = new JSONArray(); hNodeIdsCoveredByVertex_holder_2.put(endHNodeId);
if (cn.getSemanticTypeStatus() == ColumnSemanticTypeStatus.NotAssigned) cn.setLearnedSemanticTypes(suggestedSemanticTypes); cn.includeInAutoModel();
for (ColumnNode n : columnNodes) { if (n.getSemanticTypeStatus() == ColumnSemanticTypeStatus.UserAssigned || n.getSemanticTypeStatus() == ColumnSemanticTypeStatus.AutoAssigned) steinerNodes.add(n); if (n.getSemanticTypeStatus() == ColumnSemanticTypeStatus.UserAssigned) { Map<SemanticType, LabeledLink> domainLinks = GraphUtil.getDomainLinks(this.graphBuilder.getGraph(), n, n.getUserSemanticTypes()); if (domainLinks != null) { for (LabeledLink l : domainLinks.values()) {
Alignment alignment = AlignmentManager.Instance().getAlignment(workspace.getId(), worksheetId); ColumnNode columnNode = alignment.getColumnNodeByHNodeId(hNodeId); if (columnNode.getLearnedSemanticTypes() == null) { columnNode.setLearnedSemanticTypes(new SemanticTypeUtil().getSuggestedTypes(ontMgr, columnNode, model)); if (columnNode.getLearnedSemanticTypes().isEmpty()) { logger.info("no semantic type learned for the column " + hNodeId);