2013-04-07 76 views
1

我有一个我在TopBraid中加载的RDF文件,我也从Web导入了一些RDF文件。最后,我保存了基本文件并检查其代码,以确保它包含导入语句。Jena无法从导入的RDF文件加载数据

<owl:Ontology rdf:about=""> 
    <owl:imports rdf:resource="http://www.bbc.co.uk/nature/life/Bird"/> 
    <owl:imports rdf:resource="http://www.bbc.co.uk/nature/life/Animal"/> 
    <owl:imports rdf:resource="http://www.bbc.co.uk/nature/life/Chordate"/> 
    <owl:imports rdf:resource="http://www.bbc.co.uk/nature/kingdom"/> 
    </owl:Ontology> 

所以,这就是文件,当我执行下面的SPARQL,我得到的结果:

PREFIX wo:<http://purl.org/ontology/wo/> 
SELECT * 
WHERE { 
    ?subject wo:kingdom ?object . 
} 

然而,当我使用的是耶拿相同的文件,我很老的任何结果,似乎耶拿不考虑进口:

// Open the bloggers RDF graph from the filesystem 
     InputStream in = new FileInputStream(new File("/home/noor/TBCMEWorkspace/bbc/index.rdf")); 

     // Create an empty in-memory model and populate it from the graph 
     Model model = ModelFactory.createMemModelMaker().createFreshModel(); 
     model.read(in,null); // null base URI, since model URIs are absolute 
     in.close(); 

     // Create a new query 
     String queryString = "PREFIX wo:<http://purl.org/ontology/wo/>" + 
      " SELECT * " + 
      " WHERE { " + 
      " ?subject ?x ?object . " + 
      " } "; 

     Query query = QueryFactory.create(queryString); 
     // Execute the query and obtain results 
     QueryExecution qe = QueryExecutionFactory.create(query, model); 
     ResultSet results = qe.execSelect(); 

     // Output query results 
     ResultSetFormatter.out(System.out, results, query); 

     // Important - free up resources used running the query 
     qe.close(); 

有如何使耶拿考虑进口任何方式?

回答

2

一个普通的耶拿模型不会加载导入的OWL模型,但OntModel会。基本的Jena模型设计用于处理RDF(即包括OWL,但也包括RDF的其他用途),而来自本体API的OntModel专门用于与OWL和其他本体一起使用。

+0

伟大的人,它工作:) – Noor 2013-04-08 09:31:47