1 package eu.fbk.dkm.pikes.rdf.api; 2 3 import eu.fbk.rdfpro.RDFHandlers; 4 import eu.fbk.rdfpro.RDFProcessor; 5 import eu.fbk.rdfpro.RDFSource; 6 import eu.fbk.rdfpro.RDFSources; 7 import eu.fbk.rdfpro.util.QuadModel; 8 import org.eclipse.rdf4j.model.Statement; 9 import org.eclipse.rdf4j.rio.RDFHandler; 10 11 import java.util.ArrayList; 12 import java.util.List; 13 14 public interface Mapper { 15 16 void map(QuadModel model) throws Exception; 17 18 public static Mapper concat(final Mapper... mappers) { 19 return new Mapper() { 20 21 @Override 22 public void map(final QuadModel model) throws Exception { 23 for (final Mapper mapper : mappers) { 24 mapper.map(model); 25 } 26 } 27 28 }; 29 } 30 31 public static Mapper forProcessor(final RDFProcessor processor) { 32 return new Mapper() { 33 34 @Override 35 public void map(final QuadModel model) throws Exception { 36 final List<Statement> statements = new ArrayList<>(); 37 final RDFSource source = RDFSources.wrap(model); 38 final RDFHandler handler = RDFHandlers.wrap(statements); 39 processor.wrap(source).emit(handler, 1); 40 model.addAll(statements); 41 } 42 43 }; 44 } 45 46 }