2017-10-21 6 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

하지만 매우 큰 데이터를 그리고 내가 로컬 메모리에로드 할 경우, 내 컴퓨터가 관리하지 않기 때문에 내 자바 프로그램의 목적은 점진적으로 이러한 온톨로지를 보내는 것입니다.

답변

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를 사용할 수 있습니다.

1

는 오 당신이 ONT-API을 사용할 수 있습니다 스트림/i를 통해 무서운 변환 같은 종류를 방지하려면 : 그것은 어떤 변환

+0

감사하지 않고 그래프에서 올빼미 - 공리의 직접 읽기를 구현! 나는 그것을 시도 할 것이다. –

관련 문제