public void addTriplesMap(TriplesMap triplesMap) { triplesMapIndex.put(triplesMap.getId(), triplesMap); List<TriplesMapLink> neighbouringLinks = neighboringTriplesMapCache.get(triplesMap.getId()); if (neighbouringLinks == null) { neighbouringLinks = new LinkedList<>(); neighboringTriplesMapCache.put(triplesMap.getId(), neighbouringLinks); } }
@Override public String toString() { if (template != null) return "ObjectMap [\n" + "template=" + template + ",\n" + "rdfLiteralType=" + rdfLiteralType + ",\n" + "language=" + language + "]"; else if (refObjectMap != null) return "RefObjectMap [" + refObjectMap.getParentTriplesMap().getId() + "]"; else return "<No ObjectMap or RefObjectMap found for the ObjectMap!>"; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("TriplesMapWorker: "); sb.append("row = "); sb.append(r.getId()); sb.append("triplesMap = "); sb.append(triplesMap.getId()); return sb.toString(); } }
@Override public int compare(TriplesMapLink o1, TriplesMapLink o2) { boolean o1IsSource = o1.getSourceMap().getId().compareTo(localTriplesMapId) == 0; boolean o2IsSource = o2.getSourceMap().getId().compareTo(localTriplesMapId) == 0; if((o1IsSource && o2IsSource)|| (!o1IsSource && !o2IsSource)) { return 0; } else if(o1IsSource && !o2IsSource) { return -1; } else { return 1; } }
public List<String> removeLink(TriplesMapLink link) { List<String> removedTriplesMaps = new LinkedList<>(); links.remove(link); removedTriplesMaps.addAll(removeLinkFromCache(link, link.getTargetMap().getId())); removedTriplesMaps.addAll(removeLinkFromCache(link, link.getSourceMap().getId())); return removedTriplesMaps; }
private boolean allLinksAreIncoming(String triplesMapId, List<TriplesMapLink> links) { for(TriplesMapLink link : links) { if(link.getSourceMap().getId().compareTo(triplesMapId) == 0 && !link.isFlipped()) { return false; } } logger.debug("all links are in coming " + triplesMapId); return true; }
private void killTriplesMap(String rootId, List<String> tripleMapToKill, List<TriplesMapLink> remainedLinks, Set<String> visited) { visited.add(rootId); Set<String> next = new HashSet<>(); List<TriplesMapLink> links = neighboringTriplesMapCache.get(rootId); if (links != null) { for (TriplesMapLink link : links) { if (link.getSourceMap().getId().equals(rootId) && !tripleMapToKill.contains(link.getTargetMap().getId())) { next.add(link.getTargetMap().getId()); remainedLinks.add(link); } } } for (String n : next) { if (!visited.contains(n)) { killTriplesMap(n, tripleMapToKill, remainedLinks, visited); } } }
private void updateCache(TriplesMapLink link) { // Add source neighboring links to the cache List<TriplesMapLink> sourceNeighbouringLinks = neighboringTriplesMapCache.get(link.getSourceMap().getId()); if (sourceNeighbouringLinks == null) { sourceNeighbouringLinks = new LinkedList<>(); } sourceNeighbouringLinks.add(link); triplesMapIndex.put(link.getSourceMap().getId(),link.getSourceMap()); neighboringTriplesMapCache.put(link.getSourceMap().getId(), sourceNeighbouringLinks); // Add target neighboring links to the cache List<TriplesMapLink> targetNeighbouringLinks = neighboringTriplesMapCache.get(link.getTargetMap().getId()); if (targetNeighbouringLinks == null) { targetNeighbouringLinks = new LinkedList<>(); } targetNeighbouringLinks.add(link); triplesMapIndex.put(link.getTargetMap().getId(),link.getTargetMap()); neighboringTriplesMapCache.put(link.getTargetMap().getId(), targetNeighbouringLinks); }
public TriplesMapGraph copyGraph(HashSet<String> triplesMapsIds) { TriplesMapGraph newGraph = new TriplesMapGraph(); for(TriplesMapLink link : links) { if (triplesMapsIds != null) { triplesMapsIds.add(link.getSourceMap().getId()); triplesMapsIds.add(link.getTargetMap().getId()); } newGraph.addLink(link); } return newGraph; }
private void stopTriplesMap(String rootId, List<String> tripleMapToStop, List<TriplesMapLink> remainedLinks, Set<String> visited) { visited.add(rootId); if (tripleMapToStop.contains(rootId)) { return; } Set<String> next = new HashSet<>(); List<TriplesMapLink> links = neighboringTriplesMapCache.get(rootId); if (links != null) { for (TriplesMapLink link : links) { if (link.getSourceMap().getId().equals(rootId)) { next.add(link.getTargetMap().getId()); remainedLinks.add(link); } } } for (String n : next) { if (!visited.contains(n)) { stopTriplesMap(n, tripleMapToStop, remainedLinks, visited); } } }
private void killPredicateObjectMap(String rootId, List<String> POMToKill, List<TriplesMapLink> remainedLinks, Set<String> visited) { visited.add(rootId); Set<String> next = new HashSet<>(); List<TriplesMapLink> links = neighboringTriplesMapCache.get(rootId); if (links != null) { for (TriplesMapLink link : links) { if (link.getSourceMap().getId().equals(rootId) && !POMToKill.contains(link.getPredicateObjectMapLink().getId())) { next.add(link.getTargetMap().getId()); remainedLinks.add(link); } } } for (String n : next) { if (!visited.contains(n)) { killPredicateObjectMap(n, POMToKill, remainedLinks, visited); } } }
@Override public void outputTripleWithLiteralObject( PredicateObjectMap predicateObjectMap, String subjUri, String predicateUri, String value, String literalType, String language) { if (subjUri.indexOf("<") != -1 && subjUri.indexOf(">") != -1) { String tmp = subjUri.substring(1, subjUri.length() - 1); subjUri = "<" + normalizeURI(tmp) + ">"; } TriplesMap subjTriplesMap = predicateObjectMap.getTriplesMap(); bloomFilterManager.addUriToBloomFilter(subjTriplesMap.getId(), subjUri); if(predicateUri.equalsIgnoreCase(formattedTypeURI)) { return; } bloomFilterManager.addUriToBloomFilter(predicateObjectMap.getId(), subjUri); }
@Override public void outputQuadWithLiteralObject( PredicateObjectMap predicateObjectMap, String subjUri, String predicateUri, String value, String literalType, String language, String graph) { if (subjUri.indexOf("<") != -1 && subjUri.indexOf(">") != -1) { String tmp = subjUri.substring(1, subjUri.length() - 1); subjUri = "<" + normalizeURI(tmp) + ">"; } TriplesMap subjTriplesMap = predicateObjectMap.getTriplesMap(); bloomFilterManager.addUriToBloomFilter(subjTriplesMap.getId(), subjUri); if(predicateUri.equalsIgnoreCase(formattedTypeURI)) { return; } bloomFilterManager.addUriToBloomFilter(predicateObjectMap.getId(), subjUri); }
@Override public Boolean call() throws HNodeNotFoundKarmaException, ValueNotFoundKarmaException, NoValueFoundInNodeException { try{ latch.await(); } catch (Exception e ) { LOG.error("Error while waiting for dependent triple maps to process", e); notifyDependentTriplesMapWorkers(); return false; } LOG.debug("Processing " + triplesMap.getId() + " " +triplesMap.getSubject().getId()); try { plan.execute(r, outWriters); } catch (Exception e) { e.printStackTrace(); LOG.error("Something went wrong " + e.getMessage() ); } LOG.debug("Processed " + triplesMap.getId() + " " +triplesMap.getSubject().getId()); notifyDependentTriplesMapWorkers(); return true; }
private void addTripleMap(KR2RMLMapping mapping, Resource mappingRes, Worksheet worksheet, Workspace workspace, TriplesMap trMap) throws RepositoryException { URI trMapUri = f.createURI(Namespaces.KARMA_DEV + trMap.getId()); addTripleMapMetadata(mapping, mappingRes, worksheet, trMap, trMapUri); addSubjectMap(mapping, mappingRes, trMap, trMapUri, workspace); addPredicateObjectMaps(mapping, mappingRes, trMap, trMapUri, workspace, worksheet); }
@Override public void outputTripleWithLiteralObject( PredicateObjectMap predicateObjectMap, String subjUri, String predicateUri, String value, String literalType, String language) { E subject = checkAndAddSubjUri(predicateObjectMap.getTriplesMap().getId(), subjUri); //TODO should literal type be ignored? addValue(predicateObjectMap, subject, predicateUri, convertLiteral(value, literalType, language)); }
@Override public void outputQuadWithLiteralObject( PredicateObjectMap predicateObjectMap, String subjUri, String predicateUri, String value, String literalType, String language, String graph) { E subject = checkAndAddSubjUri(predicateObjectMap.getTriplesMap().getId(), subjUri); //TODO should literal type be ignored? //TODO should graph be ignored? addValue(predicateObjectMap, subject, predicateUri, convertLiteral(value, literalType, language)); }
@Override public void outputTripleWithURIObject(PredicateObjectMap predicateObjectMap, String subjUri, String predicateUri, String objectUri) { if (subjUri.indexOf("<") != -1 && subjUri.indexOf(">") != -1) { String tmp = subjUri.substring(1, subjUri.length() - 1); subjUri = "<" + normalizeURI(tmp) + ">"; } if (objectUri.indexOf("<") != -1 && objectUri.indexOf(">") != -1) { String tmp = objectUri.substring(1, objectUri.length() - 1); objectUri = "<" + normalizeURI(tmp) + ">"; } TriplesMap subjTriplesMap = predicateObjectMap.getTriplesMap(); bloomFilterManager.addUriToBloomFilter(subjTriplesMap.getId(), subjUri); if(predicateUri.equalsIgnoreCase(formattedTypeURI)) { return; } bloomFilterManager.addUriToBloomFilter(predicateObjectMap.getId(), subjUri); if(predicateObjectMap.getObject().hasRefObjectMap()) { bloomFilterManager.addUriToBloomFilter(predicateObjectMap.getObject().getRefObjectMap().getId(), objectUri); } }
private void addURIObject(PredicateObjectMap pom, String subjUri, String predicateUri, String objectUri) { E subject = checkAndAddSubjUri(pom.getTriplesMap().getId(), subjUri); if(pom.getObject().getRefObjectMap() == null) { addValue(pom, subject, predicateUri, objectUri); return; } String parentTriplesMapId = pom.getObject().getRefObjectMap().getParentTriplesMap().getId(); E object = getGeneratedObject(parentTriplesMapId, objectUri); String refParentObjectTriplesMapId = pom.getObject().getRefObjectMap().getParentTriplesMap().getId(); if(object == null || rootTriplesMapIds.isEmpty() || rootTriplesMapIds.contains(refParentObjectTriplesMapId)) { addValue(pom, subject, predicateUri, objectUri); return; } addValue(pom, subject, predicateUri, object); }
private boolean doesPredicateAlreadyExist(TriplesMap triplesMap, PredicateObjectMap poMap, RefObjectMap refObjMap) { boolean alreadyExists = false; for(PredicateObjectMap pom : triplesMap.getPredicateObjectMaps()) { if(pom.getPredicate().getTemplate().isSingleUriString() && poMap.getPredicate().getTemplate().isSingleUriString()) { if(pom.getPredicate().getTemplate().toString().equalsIgnoreCase(poMap.getPredicate().getTemplate().toString())) { if(pom.getObject().hasRefObjectMap() && pom.getObject().getRefObjectMap().getParentTriplesMap().getId().equalsIgnoreCase(refObjMap.getParentTriplesMap().getId())) { alreadyExists = true; } else if(!pom.getObject().hasRefObjectMap() && !poMap.getObject().hasRefObjectMap() && pom.getObject().getTemplate().toString().compareTo(poMap.getObject().getTemplate().toString())== 0) { alreadyExists = true; } } } } return alreadyExists; }