2015-03-11 2 views
1

Так что я смог добавить некоторые классы в онтологию и сохранить их в файл. Теперь я хотел бы иметь возможность добавлять Datatype в свой класс, но я смущен тем, как это сделать, возможно, очень просто. Это то, что я пытался:owlapi Как добавить OWLDatatype в OWLClass

OWLClass currentClass =df.getOWLClass(IRI.create("Base")); 
OWLDataProperty owlAttr = df.getOWLDataProperty(IRI.create("#" + "name"); 

OWLLiteralImplString lit = new OWLLiteralImplString("test"); //This is probably on the wrong path 
DefaultPrefixManager defaultPrefixManager = new DefaultPrefixManager(); 
OWLDatatype datatype = df.getOWLDatatype("xsd:string",defaultPrefixManager); 


OWLAxiom axiom = df.getOWLDatatypeDefinitionAxiom(datatype, ?); //having trouble find a range. 

Редактировать # 1 Так что я немного обеспокоен тем, что мой вопрос непонятен. То, что я пытаюсь сделать, было бы похоже на это в Java:

public class Car{ 

} 

В настоящее время я нахожусь в состоянии создать класс, используя owlapi но то, что я ищу, чтобы сделать было бы как добавление DataMember в мой класс Java:

public class Car{ 
    public String manufacturer;   

} 

Использование Protege я могу производить это я думаю, это то, что я хочу быть в состоянии сделать с owlapi:

<!-- http://www.co-ode.org/ontologies/ont.owl#manufacturer --> 

<DatatypeProperty rdf:about="http://www.co-ode.org/ontologies/ont.owl#manufacturer"> 
    <rdfs:domain rdf:resource="http://www.co-ode.org/ontologies/ont.owl#Car"/> 
    <rdfs:range rdf:resource="&xsd;string"/> 
</DatatypeProperty> 



<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// Classes 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.co-ode.org/ontologies/ont.owl#Car --> 

<Class rdf:about="http://www.co-ode.org/ontologies/ont.owl#Car"/> 

ответ

3

Нечто подобное могло бы помочь:

OWLDatatype datatype = factory.getOWLDatatype("xsd:string",pm); 
    OWLLiteral lit= factory.getOWLLiteral("1", datatype); 

Может быть, вы хотите, чтобы определить минимальное и максимальное ограничение:

OWLDataUnionOf union = factory.getOWLDataUnionOf(factory.getOWLDatatypeMinInclusiveRestriction(1), factory.getOWLDatatypeMaxInclusiveRestriction(10)); 
    OWLDatatypeDefinitionAxiom axiom = factory.getOWLDatatypeDefinitionAxiom(datatype, union); 

Edit # 1: Я добавил новый код, основанный на отредактированный вопрос.

PrefixManager pm= new DefaultPrefixManager("http://www.co-ode.org/ontologies/ont.owl#"); 
    OWLDataPropertyExpression man= factory.getOWLDataProperty("manufacturer", pm); 
    OWLClass car= factory.getOWLClass("Car", pm); 
    OWLDatatype dt = factory.getOWLDatatype("xsd:string",pm); 

    OWLDataPropertyDomainAxiom domain=factory.getOWLDataPropertyDomainAxiom(man, car); 
    OWLDataPropertyRangeAxiom range= factory.getOWLDataPropertyRangeAxiom(man, dt); 
+0

Я думаю, что, возможно, я попросил неправильного. Может быть, мое редактирование поможет. Я буду играть с вашим ответом, чтобы узнать, помогает ли это. – Travis

+0

Посмотрите, поможет ли мой отредактированный ответ. – Artemis

+0

Да, я думаю, это то, что мне нужно. Извините за путаницу моей первоначальной версии вопроса. – Travis