2012-01-13 3 views
1

GWT를 사용하여 개발중인 웹 응용 프로그램에서 작업 중입니다. 또한 OWL 온톨로지와 Jena 프레임 워크를 사용하여 애플리케이션에서 의미있는 내용을 구조화합니다.GWT를 사용하여 클라이언트에서 서버로 OWL 데이터 전송하기

응용 프로그램의 간단한 기능은 사용자로부터 일부 데이터를 가져 와서 서버 측으로 보내면 온톨로지를 사용하여 데이터 그래프로 저장됩니다. 한 가지 방법은 데이터를 Java 클래스 객체로 온톨로지 클래스와 동등하게 저장하고 GWT 비동기 통신을 사용하여 전송하는 것입니다. OWL 클래스를 java로 변환하려면 Jastor를 사용했습니다.

제 질문은 서버가 Java 클래스를받은 후에 쉽게 OWL 개체로 변환하여 Jena 및/또는 Jastor의 기능을 사용하여 데이터 그래프에 추가 할 수 있습니까?

Public void StoreUser (User userObj) { 
    //User: a Jastor created java class. userObj is instantiated using the user data on the client side. 

    OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM); 
    //Open the ontology here using inputstream and ontModel.read! 

    Individual indiv = (Individual) userObj.resource(); 

    //Add the individual to the model here! } 

불행하게도 내가 모델에 기존 개인을 추가 할 수있는 예나 기능을 찾을 수 없습니다 : 서버 측 인터페이스 구현의 예를 들어 우리는 다음과 같이 호출합니다.

XML 파일을 사용하는 등 Jastor로 만든 클래스를 사용하는 대신 온톨로지 데이터를 서버 측에 전달하고 저장하는 다른 방법을 제안 하시겠습니까?

귀하의 도움에 감사드립니다.

답변

2

답변에 두 부분이 있습니다. 첫째, Individual은 Jena Resource의 하위 클래스입니다.이 모델은 확실히 모델에 추가 할 수 있습니다. 그러나 개별 리소스 또는 속성 또는 리터럴은 Model에 저장되지 않습니다. Model은 Java API에 Statement 오브젝트로 표시된 트리플 만 저장합니다. 따라서 모델에 리소스를 추가하려면 해당 리소스를 트리플에 포함해야합니다.

예나에서 개인은 술어가 rdf:type 인 트리플의 대상으로 정의되며 개체는 기본 제공 언어 클래스 중 하나가 아닙니다. 당신이 그렇다면 :

ex:my_car rdf:type ex:Ferrari . 
ex:Ferrari rdf:type owl:Class . 

(참고 :!이 예는 완전히 허구입니다), 다음 ex:my_car 개별 것이지만, ex:Ferrari는 않을 것 (OWL Class이기 때문에 내장 타입). 따라서 개인을 모델에 추가하려면 해당 모델이 어떤 유형인지 주장해야합니다. GWT를 알지 못하고 Jastor를 사용하지 않기 때문에 serialization 후에 Jena Individual의 일부인 형식 연결이 유지되는지 여부를 말할 수 없습니다. 그럴 경우 추가하려는 개인의 유형을 결정하는 다른 방법이 필요하거나 rdf:type 이외의 다른 술어를 사용하여 Model에 자원을 추가해야합니다.

개인적으로 나는이 방법으로 당신의 문제를 전혀 해결하지 못할 것이라고 말했습니다. 일반적으로 서버 측 RDF의 클라이언트 측 표현으로 작업 할 때 JSON으로 클라이언트에 최소한의 정보 (예 : URI 및 레이블) 만 전송합니다. 주어진 리소스에 대해 더 많은 데이터가 필요하다면 초기 JSON 직렬화와 함께 보내거나 그냥 Ajax 호출로 보냅니다. 그러나, 내가 말했듯이, GWT를 사용하지 않기 때문에 조언은 당신에게 유용하지 않을 수 있습니다.

+0

이안 감사합니다. 매우 도움이되는 답변을 바탕으로 문제를 해결할 수있는 방법을 찾으려고합니다. 다시 한 번 감사드립니다! – Ehsan

관련 문제