2013-10-13 2 views
2

인스턴스를 추가하지 않고 OWL-API를 사용하여 온톨로지에서 클래스를 생성해야한다는 요구 사항이 있습니다.OWL API - 인스턴스가없는 클래스 생성

개인 및 인스턴스와 함께 예제 및 설명서가 있지만 클래스가 만들어진 모든 장소를 확인했습니다. 모든 인스턴스없이 클래스를 만들 수있는 방법이 있나요 (그리고 나중에 그들에게) 내가 같은 것을 할 것입니다 입력 문자열에서 인스턴스없이 같은 클래스로 모델링 요소를 만들고 싶었 경우

답변

0

:

OWLEntity entity = factory.getOWLEntity(EntityType.CLASS, IRI.create(input)); 

EntityType.CLASSEntityType.ObjectProperty과 같은 다른 요소로 변경할 수 있습니다. 이것이 제가이 문제에 접근하는 방법입니다. 인스턴스를 추가하고 싶을 때 나는 온톨로지 관리자에게 새로운 공리를 추가합니다.

+0

감사합니다. 기본적으로 내 문제를 해결합니다. 나는 OWLOntologyManager 객체에 OWLDeclarationAxiom이라는 객체를 추가했다. – jana

+0

@ jana의 유스 케이스에 대한보다 유익한 (내 의견으로는 더 읽기 쉬운) factory.getOWLClass (IRI.create (input)) '[예제에 나와 있습니다] (https://github.com/owlcs/owlapi/blob/master/contract/src/test/java/org/coode/owlapi/examples/Examples.java#L275)? –

+0

일반적으로 모르겠지만 Manchester Syntax의 경우 유형을 지정해야합니다. 따라서 거기에 유형이 있습니다. – Artemis

2

클래스를 선언하고 사용하기 위해 인스턴스를 추가 할 필요는 없습니다. 예를 들어

:

OWLClass c = factory.getOWLClass(IRI.create(cInput)); 
OWLAxiom declareC = factory.getOWLDeclarationAxiom(c); 
// adding declareC to the ontology is necessary to have any output 
manager.addAxiom(ontology, declareC); 

실체를 얻기 위하여는 온톨로지를 저장할 때 어떤 공리는 온톨로지에 포함, 그것은 사용해야합니다 출력. 이 예제에서, 그 공리는 클래스 선언입니다. 그것은 서브 클래스의 공리 또는 주장 일 수 있습니다 (이 경우 인스턴스가 생성됩니다).

+0

감사합니다 Ignazio. 이 솔루션은 작동합니다. – jana

관련 문제