private void createTripleMaps() { Set<Node> nodes = alignmentGraph.vertexSet(); for (Node node:nodes) { if (node instanceof InternalNode) { // Create a TriplesMap corresponding to the Internal node SubjectMap subjMap = r2rmlMapping.getSubjectMapIndex().get(node.getId()); TriplesMap trMap = new TriplesMap(TriplesMap.getNewId(), subjMap); r2rmlMapping.getTriplesMapIndex().put(node.getId(), trMap); this.r2rmlMapping.addTriplesMap(trMap); r2rmlMapping.getAuxInfo().getTriplesMapGraph().addTriplesMap(trMap); } } }
private void initializeMemberVariables(Worksheet worksheet, Workspace workspace, String outputFileName, boolean addColumnContextInformation, KR2RMLMapping kr2rmlMapping, ErrorReport errorReport) { // this.kr2rmlMapping = kr2rmlMapping; this.workspace = workspace; this.factory = workspace.getFactory(); this.worksheet = worksheet; this.outputFileName = outputFileName; this.errorReport = errorReport; this.uriFormatter = new URIFormatter(kr2rmlMapping.getPrefixes(), errorReport); this.hNodeToContextUriMap = new ConcurrentHashMap<>(); this.addColumnContextInformation = addColumnContextInformation; this.translator = new KR2RMLMappingColumnNameHNodeTranslator(factory, worksheet); this.outWriters = new LinkedList<>(); }
private void addTripleMaps(KR2RMLMapping mapping, Resource mappingRes, Worksheet worksheet, Workspace workspace) throws RepositoryException { /** Get the required data structures of R2RML **/ List<TriplesMap> triplesMapList = mapping.getTriplesMapList(); /** Add all the triple maps **/ for (TriplesMap trMap:triplesMapList) { addTripleMap(mapping, mappingRes, worksheet, workspace, trMap); } }
private void determineIfMappingIsR2RMLCompatible(Worksheet worksheet2) { boolean isRMLCompatible = KR2RMLWorksheetHistoryCompatibilityVerifier.verify(workspace, r2rmlMapping.getWorksheetHistory()); r2rmlMapping.setRMLCompatible(isRMLCompatible); if(isRMLCompatible && r2rmlMapping.getSourceType().equals(SourceTypes.DB)) { r2rmlMapping.setR2RMLCompatible(true); } }
private void addColumnNameToPredObjectMapLink(ObjectMap objMap, PredicateObjectMap pom, KR2RMLMapping kr2rmlMapping) { TemplateTermSet objTermSet = objMap.getTemplate(); if(objTermSet == null) { logger.error("No matching object term set"); return; } for (TemplateTerm term:objTermSet.getAllTerms()) { if (term instanceof ColumnTemplateTerm) { String columnName = term.getTemplateTermValue(); String columnNameWithoutFormatting = kr2rmlMapping.getColumnNameFormatter().getColumnNameWithoutFormatting(columnName); List<PredicateObjectMap> existingPomList = kr2rmlMapping.getAuxInfo(). getColumnNameToPredObjLinks().get(columnNameWithoutFormatting); if (existingPomList == null) { existingPomList = new ArrayList<>(); } existingPomList.add(pom); kr2rmlMapping.getAuxInfo().getColumnNameToPredObjLinks().put(columnNameWithoutFormatting, existingPomList); } } }
logger.debug(mapping.toString()); List<TriplesMap> triplesMapList = mapping.getTriplesMapList(); writer.addPrefixes(mapping.getPrefixes()); RootStrategy strategy = new UserSpecifiedRootStrategy(rootTriplesMapId, new SteinerTreeRootStrategy(new WorksheetDepthRootStrategy())); KR2RMLWorksheetRDFGenerator generator = new KR2RMLWorksheetRDFGenerator(worksheet, workspace, writer, false, strategy, mapping, errorReport, selection);
for(TriplesMapGraph graph : kr2rmlMapping.getAuxInfo().getTriplesMapGraph().getGraphs()) if (writer instanceof SFKR2RMLRDFWriter) { SFKR2RMLRDFWriter jsonWriter = (SFKR2RMLRDFWriter)writer; jsonWriter.addPrefixes(kr2rmlMapping.getPrefixes()); for(Entry<TriplesMapGraph, List<String>> entry : graphTriplesMapsProcessingOrder.entrySet()) TriplesMapPlanExecutor e = new TriplesMapPlanExecutor(false); Map<TriplesMap, TriplesMapWorkerPlan> triplesMapToWorkerPlan = new HashMap<>() ; for(TriplesMap triplesMap : kr2rmlMapping.getTriplesMapList())
Resource blankNodeSubjRes = blankNodeSubjMapItr.next(); SubjectMap subjMap = kr2rmlMapping.getSubjectMapIndex().get(blankNodeSubjRes.getId().getLabelString()); subjMap.setAsBlankNode(true); NodeIterator bnodePrefixItr = model.listObjectsOfProperty(blankNodeSubjRes, kmBnodePrefixProp); while (bnodePrefixItr.hasNext()) { kr2rmlMapping.getAuxInfo().getBlankNodesUriPrefixMap().put(subjMap.getId(), bnodePrefixItr.next().toString()); for(TriplesMap tm : kr2rmlMapping.getTriplesMapList()) kr2rmlMapping.getAuxInfo().getBlankNodesColumnCoverage().put(subjMap.getId(), columnsCovered); kr2rmlMapping.getAuxInfo().getSubjectMapIdToTemplateAnchor().put(subjMap.getId(), KR2RMLMappingAuxillaryInformation.findSubjectMapTemplateAnchor(columnsCovered));
private List<Resource> createSubjectMaps(Resource mappingResource, KR2RMLMapping kr2rmlMapping) throws JSONException { List<Resource> subjectMapResources = new ArrayList<>(); Property hasTrMapUri = model.getProperty(Uris.KM_HAS_TRIPLES_MAP_URI); // Get all the triple maps NodeIterator trMapsResItr = model.listObjectsOfProperty(mappingResource, hasTrMapUri); while (trMapsResItr.hasNext()) { Resource trMapRes = trMapsResItr.next().asResource(); SubjectMap subjMap = addSubjectMapForTripleMap(trMapRes, kr2rmlMapping, subjectMapResources); // Add the Triples map TriplesMap trMap = new TriplesMap(trMapRes.getURI(), subjMap); kr2rmlMapping.getTriplesMapIndex().put(trMapRes.getURI(), trMap); kr2rmlMapping.addTriplesMap(trMap); kr2rmlMapping.getAuxInfo().getTriplesMapGraph().addTriplesMap(trMap); } return subjectMapResources; }
kr2rmlMapping.getSubjectMapIndex().put(subjMapId, subjMap); String template = templNode.toString(); subjTemplTermSet = TemplateTermSetBuilder.constructTemplateTermSetFromR2rmlTemplateString( template, kr2rmlMapping.getColumnNameFormatter()); List<String> columnsCovered = new LinkedList<>(); for(TemplateTerm term : subjTemplTermSet.getAllColumnNameTermElements()) kr2rmlMapping.getAuxInfo().getSubjectMapIdToTemplateAnchor().put(subjMap.getId(), KR2RMLMappingAuxillaryInformation.findSubjectMapTemplateAnchor(columnsCovered));
Property templateProp = model.getProperty(Uris.RR_TEMPLATE_URI); Property constantProp = model.getProperty(Uris.RR_CONSTANT); KR2RMLColumnNameFormatter formatter = kr2rmlMapping.getColumnNameFormatter(); TriplesMap trMap = kr2rmlMapping.getTriplesMapIndex().get(trMapRes.getURI()); if (trMap == null) { logger.error("No Triples Map found for resource: " + trMapRes.getURI()); while (parentTripleMapItr.hasNext()) { Resource parentTripleRes = parentTripleMapItr.next().asResource(); TriplesMap parentTM = kr2rmlMapping.getTriplesMapIndex().get(parentTripleRes.getURI()); kr2rmlMapping.getAuxInfo().getTriplesMapGraph().addLink(link); boolean isUri = !templNode.isLiteral(); objTemplTermSet = TemplateTermSetBuilder.constructTemplateTermSetFromR2rmlTemplateString( template, isUri, kr2rmlMapping.getColumnNameFormatter());
if (node instanceof InternalNode) { SubjectMap subjMap = r2rmlMapping.getSubjectMapIndex().get(node.getId()); TriplesMap subjTrMap = r2rmlMapping.getTriplesMapIndex().get(node.getId()); TriplesMap objTrMap = r2rmlMapping.getTriplesMapIndex().get(target.getId()); RefObjectMap refObjMap = new RefObjectMap(RefObjectMap.getNewRefObjectMapId(), objTrMap); ObjectMap objMap = new ObjectMap(target.getId(), refObjMap); r2rmlMapping.getAuxInfo().getTriplesMapGraph().addLink(link);
if (treeNode instanceof InternalNode && r2rmlMapping.getSubjectMapIndex().containsKey(treeNode.getId())) { SubjectMap subjMap = r2rmlMapping.getSubjectMapIndex().get(treeNode.getId()); r2rmlMapping.getAuxInfo().getBlankNodesColumnCoverage().put(treeNode.getId(), columnsCovered); r2rmlMapping.getAuxInfo().getBlankNodesUriPrefixMap().put(treeNode.getId(), treeNode.getDisplayId()); r2rmlMapping.getAuxInfo().getSubjectMapIdToTemplateAnchor().put(treeNode.getId(), KR2RMLMappingAuxillaryInformation.findSubjectMapTemplateAnchor(columnsCovered));
KR2RMLMapping kr2rmlMapping = new KR2RMLMapping(id, version); Map<String, String> prefixes = model.getNsPrefixMap(); for(Entry<String, String> prefix : prefixes.entrySet()) kr2rmlMapping.addPrefix(p); kr2rmlMapping.setColumnNameFormatter(KR2RMLColumnNameFormatterFactory.getFormatter(sourceType));
private void saveLinkFromColumnNameToPredicateObjectMap(String columnName, PredicateObjectMap poMap) { List<PredicateObjectMap> pomList = r2rmlMapping.getAuxInfo().getColumnNameToPredObjLinks().get(columnName); if (pomList == null) { pomList = new ArrayList<>(); } pomList.add(poMap); r2rmlMapping.getAuxInfo().getColumnNameToPredObjLinks().put(columnName, pomList); }
TriplesMap inverseTrMap = r2rmlMapping.getTriplesMapIndex().get(poMap.getObject().getId()); r2rmlMapping.getAuxInfo().getTriplesMapGraph().addLink(new TriplesMapLink(inverseTrMap, subjTrMap, invPoMap)); TriplesMap inverseOfTrMap = r2rmlMapping.getTriplesMapIndex().get(poMap.getObject().getId()); r2rmlMapping.getAuxInfo().getTriplesMapGraph().addLink(new TriplesMapLink(inverseOfTrMap, subjTrMap, invOfPoMap));
private JSONArray extractHistoryFromModel(Workspace workspace, UpdateContainer uc) throws RepositoryException, RDFParseException, IOException, JSONException, KarmaException { if(r2rmlModelFile != null) { Worksheet ws = workspace.getFactory().getWorksheet(worksheetId); R2RMLMappingIdentifier id = new R2RMLMappingIdentifier(ws.getTitle(), r2rmlModelFile); WorksheetR2RMLJenaModelParser parser = new WorksheetR2RMLJenaModelParser(id); KR2RMLMapping mapping = parser.parse(); KR2RMLVersion version = mapping.getVersion(); if(version.compareTo(KR2RMLVersion.current) < 0) { uc.add(new InfoUpdate("Model version is " + version.toString() + ". Current version is " + KR2RMLVersion.current.toString() + ". Please publish it again.")); } return mapping.getWorksheetHistory(); } else { uc.add(new ErrorUpdate("Model could not be found")); return new JSONArray(); } }
private void addPrefixes() { Map<String, String> prefixMap = workspace.getOntologyManager().getPrefixMap(); for (Entry<String, String> entry :prefixMap.entrySet()) { Prefix p = new Prefix(entry.getValue(), entry.getKey()); r2rmlMapping.addPrefix(p); } } private void identifyBlankNodes() {
public void addCompleteWorksheetHistory(KR2RMLMapping mapping, Resource mappingRes) throws RepositoryException { URI hasWorksheetHistoryUri = f.createURI(Uris.KM_HAS_WORKSHEET_HISTORY_URI); Value historyLiteral = f.createLiteral(mapping.getWorksheetHistory().toString(4)); con.add(mappingRes, hasWorksheetHistoryUri, historyLiteral); }
private void identifyBlankNodes() { for (SubjectMap subjMap:r2rmlMapping.getSubjectMapIndex().values()) { if (subjMap.getTemplate().getAllTerms().size() == 1 && (subjMap.getTemplate().getAllTerms().get(0) instanceof StringTemplateTerm)) { String str = subjMap.getTemplate().getAllTerms().get(0).getTemplateTermValue(); if (str.equals(sourceNamespace)) subjMap.setAsBlankNode(true); } } }