1

TopBraid にロードした RDF ファイルがあり、Web からいくつかの 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 .
}

ただし、Jena で同じファイルを使用している場合、結果が得られません。Jena はインポートを考慮していないようです。

// 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();

Jenaにインポートを考慮させる方法はありますか??

4

1 に答える 1

2

通常の Jena モデルはインポートされた OWL モデルをロードしませんが、OntModelはロードします。基本的な Jena モデルは、RDF を処理するように設計されています (つまり、OWL を含みますが、RDF の他の用途も同様です)。一方、OntModelオントロジー API は、OWL および他のオントロジーと連携するために特別に設計されています。

于 2013-04-08T08:36:43.030 に答える