
org.ontoware.rdf2go.util.transform.SearchRemoveAddRule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rdf2go.api Show documentation
Show all versions of rdf2go.api Show documentation
RDF2go is an implementation-independent Java API with the design
goals: portability (hence the name), performance and ease of
implementation.
This project was started at FZI Forschungszentrum Informatik Karlsruhe, Germany - www.fzi.de
The newest version!
/**
* LICENSE INFORMATION
*
* Copyright 2005-2008 by FZI (http://www.fzi.de).
* Licensed under a BSD license (http://www.opensource.org/licenses/bsd-license.php)
* = Max Völkel
* = FZI Forschungszentrum Informatik Karlsruhe, Karlsruhe, Germany
* = 2010
*
* Further project information at http://semanticweb.org/wiki/RDF2Go
*/
package org.ontoware.rdf2go.util.transform;
import java.util.Map;
import org.ontoware.aifbcommons.collection.ClosableIterator;
import org.ontoware.rdf2go.RDF2Go;
import org.ontoware.rdf2go.model.DiffReader;
import org.ontoware.rdf2go.model.Model;
import org.ontoware.rdf2go.model.Statement;
import org.ontoware.rdf2go.model.impl.DiffImpl;
import org.ontoware.rdf2go.model.node.URI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SearchRemoveAddRule implements TransformerRule {
private static Logger log = LoggerFactory
.getLogger(SearchRemoveAddRule.class);
private String search, remove, add;
public SearchRemoveAddRule(String search, String remove, String add) {
super();
this.search = search;
this.remove = remove;
this.add=add;
}
public SearchRemoveAddRule(String search, String replace) {
super();
this.search = search;
this.remove = search;
this.add=replace;
}
@Override
public void applyRule(Model model, Map namespaceMap) {
searchAndReplace(model, namespaceMap, this.search, this.remove,this.add);
}
public static void searchAndReplace( Model model, Map namespaceMap, String search, String remove, String add ) {
log.trace("rule remove... ");
Model removeModel = RDF2Go.getModelFactory().createModel();
removeModel.open();
ClosableIterator it = model.sparqlConstruct(
Transformer.toSparqlConstruct(namespaceMap, remove, search))
.iterator();
while (it.hasNext()) {
Statement stmt = it.next();
log.trace("rule removes "+stmt);
removeModel.addStatement(stmt);
}
it.close();
log.trace("rule remove... ");
Model addModel = RDF2Go.getModelFactory().createModel();
addModel.open();
it = model.sparqlConstruct(
Transformer.toSparqlConstruct(namespaceMap, add, search))
.iterator();
while (it.hasNext()) {
Statement stmt = it.next();
log.trace("rule adds "+stmt);
addModel.addStatement(stmt);
}
it.close();
DiffReader diff = new DiffImpl(addModel.iterator(), removeModel.iterator());
addModel.close();
removeModel.close();
model.update(diff);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy