0

現在、.owl ファイルをデータセットにロードして、JENA TDB にコミットできます。どうすれば他の方向に進むことができますか? つまり、TDB 内のすべての情報を取得して、それを .owl ファイル (JENA API を使用した rdf/xml) に入れるにはどうすればよいでしょうか?

4

2 に答える 2

0
public static void writeDatasetToFile(){
Dataset dataset = TDBFactory.createDataset("./Path/to/TDB");
Model model = dataset.getDefaultModel();
File file = new File("./path/of/file.owl");
        FileOutputStream os=null;
        try {
            os = new FileOutputStream(file);
            model.writeAll(os, "RDF/XML",null);//To write model with import closure
            model.write(os, "RDF/XML",null);//To write model without import closure
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
}
于 2014-12-24T09:43:28.147 に答える
0

この回答にはいくつかの仮定が存在することに気付かないでしょう。

// Let's assume you pointed this at your existing TDB dataset on disk
final Dataset dataset = TDBFactory.createDataset(Files.createTempDirectory("ex0").toAbsolutePath().toString());

/* Your data is either in the default model of the dataset, or it's in some named  
 * graph. Let's assume that it's in a named graph with the name
 * 'urn:ex:your-graphs-iri'.
 */
// final Model yourData = dataset.getDefaultModel(); // If it were in the default
final Model yourData = dataset.getNamedModel("urn:ex:your-graphs-iri");

final Path tempFile = Files.createTempFile("ex1", ".owl");
try( final OutputStream out = Files.newOutputStream(tempFile, StandardOpenOption.CREATE_NEW) ) {
    yourData.write(out, null, "RDF/XML");
}

一般に、データセット全体のコンテンツを RDF/XML として表現することはできません。その理由は、RDF データセットはトリプルではなくクワッドで表現するのが最も簡単だからです。名前付きグラフを含むデータセット全体を書き出したい場合は、別の方法を使用する必要があります。

final Dataset dataset = TDBFactory.createDataset(Files.createTempDirectory("ex0").toAbsolutePath().toString());
final Path tempFile = Files.createTempFile("ex1", ".quads");
try( final OutputStream out = Files.newOutputStream(tempFile, StandardOpenOption.CREATE_NEW) ) {
    RDFDataMgr.write(out, dataset, "NQUADS");
}
于 2014-04-23T16:03:16.637 に答える