Search in sources :

Example 1 with DiffImpl

use of org.ontoware.rdf2go.model.impl.DiffImpl in project stanbol by apache.

the class RDF2GoUtils method urifyBlankNodes.

public static void urifyBlankNodes(Model model) {
    HashMap<BlankNode, URI> nodeMap = new HashMap<BlankNode, URI>();
    Model add = RDF2Go.getModelFactory().createModel();
    add.open();
    Model remove = RDF2Go.getModelFactory().createModel();
    remove.open();
    for (Statement stmt : model) {
        RDFTerm subj = stmt.getSubject();
        URI pred = stmt.getPredicate();
        Node obj = stmt.getObject();
        boolean match = false;
        if (subj instanceof BlankNode) {
            match = true;
            URI newSubj = nodeMap.get(subj);
            if (newSubj == null) {
                newSubj = URIGenerator.createNewRandomUniqueURI();
                nodeMap.put(subj.asBlankNode(), newSubj);
            }
            subj = newSubj;
        }
        if (obj instanceof BlankNode) {
            match = true;
            URI newObj = nodeMap.get(obj);
            if (newObj == null) {
                newObj = URIGenerator.createNewRandomUniqueURI();
                nodeMap.put(obj.asBlankNode(), newObj);
            }
            obj = newObj;
        }
        if (match) {
            remove.addStatement(stmt);
            add.addStatement(subj, pred, obj);
        }
    }
    ClosableIterator<Statement> addIt = add.iterator();
    ClosableIterator<Statement> removeIt = remove.iterator();
    model.update(new DiffImpl(addIt, removeIt));
    addIt.close();
    removeIt.close();
    add.close();
    remove.close();
}
Also used : HashMap(java.util.HashMap) Statement(org.ontoware.rdf2go.model.Statement) Node(org.ontoware.rdf2go.model.node.Node) BlankNode(org.ontoware.rdf2go.model.node.BlankNode) BlankNode(org.ontoware.rdf2go.model.node.BlankNode) Model(org.ontoware.rdf2go.model.Model) DiffImpl(org.ontoware.rdf2go.model.impl.DiffImpl) RDFTerm(org.ontoware.rdf2go.model.node.RDFTerm) URI(org.ontoware.rdf2go.model.node.URI)

Aggregations

HashMap (java.util.HashMap)1 Model (org.ontoware.rdf2go.model.Model)1 Statement (org.ontoware.rdf2go.model.Statement)1 DiffImpl (org.ontoware.rdf2go.model.impl.DiffImpl)1 BlankNode (org.ontoware.rdf2go.model.node.BlankNode)1 Node (org.ontoware.rdf2go.model.node.Node)1 RDFTerm (org.ontoware.rdf2go.model.node.RDFTerm)1 URI (org.ontoware.rdf2go.model.node.URI)1