owlapi如何将OWLDatatype添加到OWLClass

时间:2015-03-11 21:02:08

标签: owl-api

所以我已经能够将一些类添加到本体并将它们保存到文件中。现在我希望能够将一个数据类型添加到我的班级,但我很困惑如何做到这一点可能非常简单。这就是我一直在尝试的:

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创建一个类,但我想要做的就是将数据库添加到我的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"/>

1 个答案:

答案 0 :(得分:4)

这样的事情可能有所帮助:

    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); 

编辑#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);