public void execute(Row r, List<KR2RMLRDFWriter> outWriters) { List<PopulatedTemplateTermSet> subjects = subjectMapPlan.execute(r); for(PredicateObjectMappingPlan internalLinkPlan : internalLinksPlans) { internalLinkPlan.outputTriples(outWriters, internalLinkPlan.execute(r, subjects), r); } for(PredicateObjectMappingPlan columnLinkPlan : columnLinksPlans) { columnLinkPlan.outputTriples(outWriters, columnLinkPlan.execute(r, subjects), r); } for(PredicateObjectMappingPlan constantLinkPlan : constantLinksPlans) { constantLinkPlan.outputTriples(outWriters, constantLinkPlan.execute(r, subjects), r); } } }
protected void generateInternal(TemplateTermSet subjectMapTemplate, PredicateObjectMap pom, Map<ColumnTemplateTerm, HNodePath> subjectTermsToPaths) throws HNodeNotFoundKarmaException { this.pom = pom; combinedSubjectObjectTermsToPaths = new HashMap<>(); combinedSubjectObjectTermsToPaths.putAll(subjectTermsToPaths); Map<ColumnTemplateTerm, HNodePath> objectTermsToPaths = new HashMap<>(); populateTermsToPathForSubject(objectTermsToPaths, objectTemplateTermSetPopulator.getTerms()); combinedSubjectObjectTermsToPaths.putAll(objectTermsToPaths); LinkedList<ColumnTemplateTerm> objectColumnTerms = new LinkedList<>(); objectColumnTerms.addAll(objectTemplateTermSetPopulator.getTerms().getAllColumnNameTermElements()); complicatedPlan = new SinglyAnchoredTemplateTermSetPopulatorPlan(combinedSubjectObjectTermsToPaths, objectColumnTerms, subjectMapTemplate.getAllColumnNameTermElements(), selection); generatePredicatesForPom(pom); }
protected void generatePredicatesForPom(PredicateObjectMap pom) throws HNodeNotFoundKarmaException { this.pom = pom; List<ColumnTemplateTerm> subjectAndObjectTemplateTerms = new LinkedList<>(); subjectAndObjectTemplateTerms.addAll(this.combinedSubjectObjectTermsToPaths.keySet()); LinkedList<ColumnTemplateTerm> predicateColumnTemplateTerms = new LinkedList<>(); predicateColumnTemplateTerms.addAll(pom.getPredicate().getTemplate().getAllColumnNameTermElements()); predicateTemplateTermSetPopulator = new TemplateTermSetPopulator(pom.getPredicate().getTemplate(), new StringBuilder(), uriFormatter, true, true); Map<ColumnTemplateTerm, HNodePath> combinedSubjectObjectPredicateTermsToPaths = new HashMap<>(); combinedSubjectObjectPredicateTermsToPaths.putAll(combinedSubjectObjectTermsToPaths); Map<ColumnTemplateTerm, HNodePath> predicateTermsToPaths = new HashMap<>(); populateTermsToPathForSubject(predicateTermsToPaths, pom.getPredicate().getTemplate()); combinedSubjectObjectTermsToPaths.putAll(predicateTermsToPaths); predicatePlan = new DoublyAnchoredTemplateTermSetPopulator(combinedSubjectObjectTermsToPaths, predicateColumnTemplateTerms, subjectAndObjectTemplateTerms, selection); }
public void outputTriples(List<KR2RMLRDFWriter> outWriters, Map<PopulatedTemplateTermSet, List<PartiallyPopulatedTermSet>> subjectsToObjects, Row r) { for(Entry<PopulatedTemplateTermSet, List<PartiallyPopulatedTermSet>> subjectToObjects : subjectsToObjects.entrySet()) { PopulatedTemplateTermSet subject = subjectToObjects.getKey(); List<PopulatedTemplateTermSet> objects = objectTemplateTermSetPopulator.generatePopulatedTemplatesFromPartials( subjectToObjects.getValue()); for(PopulatedTemplateTermSet object : objects ) { List<PopulatedTemplateTermSet> predicates = predicateTemplateTermSetPopulator.generatePopulatedTemplatesFromPartials(predicatePlan.execute(r, subject, object)); for(PopulatedTemplateTermSet predicate : predicates) { for(KR2RMLRDFWriter outWriter : outWriters) { outputTriple(outWriter, subject, predicate, object); } } } } }