owlapi 如何将 OWLDatatype 添加到 OWLClass
owlapi how to add a OWLDatatype to OWLClass
所以我已经能够将一些 class 添加到 ontology 并将它们保存到文件中。现在我希望能够向我的 class 添加一个数据类型,但我对如何做这可能非常简单的事情感到困惑。这就是我一直在尝试的:
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 创建一个 class,但我想要做的就像向我的 Java class 添加一个数据成员:
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"/>
这样的事情可能会有所帮助:
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);
所以我已经能够将一些 class 添加到 ontology 并将它们保存到文件中。现在我希望能够向我的 class 添加一个数据类型,但我对如何做这可能非常简单的事情感到困惑。这就是我一直在尝试的:
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 创建一个 class,但我想要做的就像向我的 Java class 添加一个数据成员:
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"/>
这样的事情可能会有所帮助:
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);