2013-08-30 6 views
1

저는 온톨로지 조작을 위해 OWL API를 사용하고 있습니다. OWLObjects (예 : OWLEntity, OWLClass 등)에 해당하는 자체 Java 객체를 만들고 싶습니다. 어떻게해야합니까?OWL API 개체를 Java 개체로 변환하는 방법은 무엇입니까?

이렇게하려면 OWLEntity 개체의 이름 (String)을 가져 오는 방법을 알아야한다고 생각합니다. 그러나 어떻게? OWL API Javadoc 및 자습서를 검색했지만 방법을 찾을 수 없습니다.

public class Arg { 
    private String name; 
    private String defaultValue; 
    private boolean isEssential = false; 
    private Set<String> preArgNames; 

    public Arg(String name, String defaultValue, boolean isEssential, 
      Set<String> preArgNames) { 
     this.name = name; 
     this.defaultValue = defaultValue; 
     this.isEssential = isEssential; 
     this.preArgNames = preArgNames; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public boolean isEssential() { 
     return isEssential; 
    } 

    public void setEssential(boolean isEssential) { 
     this.isEssential = isEssential; 
    } 

    public Set<String> getPreArgNames() { 
     return preArgNames; 
    } 

    public void setPreArgNames(Set<String> preArgNames) { 
     this.preArgNames = preArgNames; 
    } 

    public String getDefaultValue() { 
     return defaultValue; 
    } 

    public void setDefaultValue(String defaultValue) { 
     this.defaultValue = defaultValue; 
    } 
} 

내 응용 프로그램에 대한 데이터 구조가 있습니다. 데이터는 온톨로지에 저장됩니다. 위에 코드 예제를 추가했습니다.

Arg 객체의 멤버 변수는 온톨로지 데이터로 채워야합니다. 예 : 클래스 SomeArg1, SomeArg2, ... 그리고 그것은 온톨로지에서 자식 클래스와 제한을 가지고 있으며, 엔티티 이름과 관련 제약 등을 가져 와서 Arg 객체의 적절한 변수를 채우고 싶습니다.

+0

예를 들어 boolean isEssential이 Java 객체에 해당하는 일부 Individual에 대한 온톨로지의 일부 속성 값을 기반으로해야한다는 것을 의미합니까? –

+0

예! 및 기타 멤버 변수도 포함됩니다. –

+0

모든 올빼미 엔티티 (클래스, 개인 ...)가 이름을 가지고있는 것은 아닙니다.이름으로 보면 rdf : id로 사용 된 URI를 의미하는 것 같습니다. Protege는 온톨로지에서 올빼미 클래스에 대한 Java 래퍼 클래스를 자동으로 생성하는 기능을 제공하므로 도움이 될 수 있습니다. – Anthony

답변

1

example 라인 1093에서 printNode(Node<OWLClass> node) 메서드는 엔티티의 이름을 가져 오는 방법을 보여줍니다. 간단하게 접두어 관리자를 정의하고이를 사용하여 원하는 엔티티의 이름을 인쇄 할 수 있습니다. 이 이름은 http://www.co-ode.org/ontologies/pizza/pizza.owl#Pizza, 인 법인이있는 경우 그 이전 코드가 인쇄됩니다 그래서

public void printEntity(OWLEntity e){ 
    String namespace = e.getIRI().getNamespace(); 
    String fragment = e.getIRI().getFragment(); 
    System.out.println("Namespace: " + namespace); 
    System.out.println("Fragment: " + fragment); 
} 

:

네임 스페이스 : http://www.co-ode.org/ontologies/pizza/pizza.owl# 조각 : 피자

그렇지 않으면 다음과 같은 방법을 사용할 수 있습니다

3

OWLEntity에는 객체에 대한 IRI를 제공하는 getIRI() 메소드가 있습니다. IRI는 CharSequence이며 고전적인 toString() 메서드를 사용하여 String으로 변환 할 수 있습니다.

최신 OWL API에서 위의 mikrohelen에서 언급 한대로 IRI의 네임 스페이스와 조각 (URI의 확장 인 즉 http://example.com 또는 urn : testuri)을 액세스 할 수도 있습니다.

모든 OWLEntity 하위 인터페이스 (OWLClass, OWLDataProperty, OWLObjectProperty, OWLDatatype, OWLNamedIndividual 및 OWLAnnotationProperty)에 유효합니다.

가 아직 앤서니의 의견을 대답 할 수 있지만 여기에 인용 해요 :

인용문 모든 올빼미 엔티티 (클래스, 개인 ...) 이름이 있습니다. 이름으로 보면 rdf : id로 사용 된 URI를 의미하는 것 같습니다. Protege는 온톨로지에서 올빼미 클래스에 대한 Java 래퍼 클래스를 자동으로 생성하는 기능을 제공하므로 도움이 될 수 있습니다. - Anthony Sep 5 at 15:04

엄밀히 말하면 모든 OWLEntity 인스턴스에는 IRI가 있습니다. IRI가없는 클래스와 개인은 실체가 아닙니다. 클래스는 적격 제한과 같은 OWLClassExpression 인스턴스이며 IRI가없는 개인은 OWLAnonymousIndividual 인스턴스입니다. 속성에도 동일하게 적용됩니다. 익명 속성은 속성 체인과 같은 표현식이지만 OWLEntity 인스턴스는 아닙니다.