Created
November 30, 2015 17:05
-
-
Save jprudent/f456cfe2a70524e4ff09 to your computer and use it in GitHub Desktop.
Extract model
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.vidal.pmsi.data; | |
import java.util.HashSet; | |
import java.util.Set; | |
import org.apache.jena.riot.RDFDataMgr; | |
import org.apache.jena.riot.RDFFormat; | |
import org.junit.Test; | |
import com.hp.hpl.jena.rdf.model.Model; | |
import com.hp.hpl.jena.rdf.model.ModelFactory; | |
import com.hp.hpl.jena.rdf.model.Resource; | |
import com.hp.hpl.jena.rdf.model.Statement; | |
import com.hp.hpl.jena.util.iterator.ExtendedIterator; | |
import com.hp.hpl.jena.util.iterator.Filter; | |
public class LearnJenaTest { | |
@Test | |
public void should_Name() { | |
Model model = loadModel(); | |
ExtendedIterator<Statement> a01Iterator = a01It(model); | |
Set<Resource> interesting = new HashSet<>(); // | |
while (a01Iterator.hasNext()) { | |
Statement a01 = a01Iterator.next(); | |
interesting.add(a01.getSubject()); // | |
interesting.addAll(findBroaders(model, a01.getSubject())); | |
} | |
exportFile(model,interesting); | |
} | |
private void exportFile(Model model, Set<Resource> interesting) { | |
Model output = ModelFactory.createDefaultModel(); | |
interesting.stream() | |
.map(resource -> model.listStatements(resource, null, (String)null)) | |
.forEach(output::add); | |
RDFDataMgr.write(System.out, output, RDFFormat.RDFXML_PRETTY); | |
} | |
private Set<Resource> findBroaders(Model model, Resource a01) { | |
ExtendedIterator<Statement> broaders = broaders(model, a01); | |
Set<Resource> interesting = new HashSet<>(); | |
while(broaders.hasNext()) { | |
Resource broader = model.getResource(broaders.next().getResource().getURI()); | |
System.out.println("Broader of : " + broader); | |
interesting.add(broader); | |
interesting.addAll(findBroaders(model, broader)); | |
} | |
return interesting; | |
} | |
private ExtendedIterator<Statement> broaders(Model model, Resource a01) { | |
return model.listStatements(a01, model.getProperty("http://www.w3.org/2004/02/skos/core#broader"), (String) null); | |
} | |
private ExtendedIterator<Statement> a01It(Model model) { | |
return model | |
.listStatements(null, model.getProperty("http://graphe.vidal.net/cim10/code"), (String) null) | |
.filterKeep(new Filter<Statement>() { | |
@Override | |
public boolean accept(Statement o) { | |
return o.getString().startsWith("A01"); | |
} | |
}); | |
} | |
private Model loadModel() { | |
return RDFDataMgr.loadModel("CIM10Full_RDFEVN.rdf"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment