如何在模型中列出属于某个OntClass的所有资源?
答案 0 :(得分:6)
要列出OntClass的所有实例,您可以使用一个恰当命名的OntClass.listInstances
。它在javadoc中有清楚的描述。一般来说,我建议如果您正在使用API,那么浏览您正在使用的类或界面的javadoc是一种很好的做法。你不需要记住它的每一点,但是你可以知道什么是可用的,并知道你需要什么时看。
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.ontology.OntResource;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
public class ListInstancesExample {
public static void main(String[] args) {
// Load the wine ontology.
final OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM );
model.read( "http://www.w3.org/TR/owl-guide/wine.rdf" );
// Get the Merlot class.
final OntClass merlot = model.getOntClass( "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Merlot" );
// Print each of its instances.
for ( final ExtendedIterator<? extends OntResource> merlots = merlot.listInstances(); merlots.hasNext(); ) {
System.out.println( merlots.next() );
}
}
}
http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#LongridgeMerlot
http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#GaryFarrellMerlot