2017-10-21 4 views
0

OWLOntologyオブジェクト(OWL APIの一部)からModelオブジェクト(Jena Apiの一部)にデータを変換する必要があります。私のJavaプログラムはowlファイルを読み込み、その内容をfusekiサーバに送信できるはずです。私が読んだところによると、Javaプログラムを介してfusekiサーバーを使って作業することは、Jena Apiでのみ可能です。そのため、私はそれを使用しています。OWLOntologyからJavaのJenaモデルへの変換

だから私はイエナのAPIを使用してサーバを布石するオントロジーを送信するいくつかの例を見つけ、この関数にそれを修正:

private static void sendOntologyToFuseki(DatasetAccessor accessor, OWLOntology owlModel){ 
     Model model; 

     /* 
     .. 
     conversion from OWLOntology to Model 
     .. 
     */ 

     if(accessor != null){ 
      accessor.add(model); 
     } 
    } 

この機能は、サーバーの布石する新しいオントロジーを追加する必要があります。不足しているコンバージョンを埋める方法はありますか?または他のアイデア、どのようにOWL APIを使用してfusekiサーバーにオントロジを送信するには?

私はこれの解決策読み: Sparql query doesn't upadate when insert some data through java code

をしかし、それはかなりのビッグデータだと、私はローカルメモリにロードした場合、私のコンピュータはそれを管理していないので、私のJavaプログラムの目的は、インクリメンタルこれらのオントロジーを送信することです。

答えて

1

Java OutputStreamに書き込み、これをInputStreamにパイプします。可能な実装は次のようになります。

/** 
* Converts an OWL API ontology into a JENA API model. 
* @param ontology the OWL API ontology 
* @return the JENA API model 
*/ 
public static Model getModel(final OWLOntology ontology) { 
    Model model = ModelFactory.createDefaultModel(); 

    try (PipedInputStream is = new PipedInputStream(); PipedOutputStream os = new PipedOutputStream(is)) { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        ontology.getOWLOntologyManager().saveOntology(ontology, new TurtleDocumentFormat(), os); 
        os.close(); 
       } catch (OWLOntologyStorageException | IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 
     model.read(is, null, "TURTLE"); 
     return model; 
    } catch (Exception e) { 
     throw new RuntimeException("Could not convert OWL API ontology to JENA API model.", e); 
    } 
} 

また、あなたは、単にパイプで連結されたストリームの代わりにByteArrayOutputStreamByteArrayInputStreamを使用することができます。 I/Oを恐ろしい変換のような種類を回避するために

1

は、あなたがONT-APIを使用することができますストリーム:それは感謝任意の変換

+0

せずに、グラフからフクロウ - 公理の直接読み取りを実装します!私はそれを試みます –

関連する問題