使用Jena API列出某个OntClass的所有资源

时间:2013-12-20 11:47:20

标签: java rdf jena

如何在模型中列出属于某个OntClass的所有资源?

1 个答案:

答案 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