Jena Ontology API:通过 Anonymous 类 为个人添加 属性 值
Jena Ontology API: Add property values for individual through Anonymous classes
以下机型
我需要为 class1 创建个人,并为创建的个人设置 属性4 和 属性5 的文字值。
为此,我正在为 Anonymous class2(in1) 创建个人并为其设置 属性 值。然后我为匿名 class1(in0) 创建个人并使用 add属性(属性2,in1),我再次为 class1(in) 创建个人并使用添加属性(属性1,in0).
String ns = "url.com";
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM);
OntClass class1 = model.createClass(ns+"class1");
OntClass Aclass1= model.createClass();
OntClass Aclass2= model.createClass();
OntProperty pro1 = model.createOntProperty(ns + "pro1");
OntProperty pro2 = model.createOntProperty(ns + "pro2");
OntProperty pro3 = model.createOntProperty(ns + "pro3");
DatatypeProperty pro4 = model.createDatatypeProperty(ns + "pro4");
DatatypeProperty pro5 = model.createDatatypeProperty(ns + "pro5");
Individual in1 = Aclass2.createIndividual(ns + "in1");
in1.addProperty( pro4, model.createTypedLiteral( 50 ) )
.addProperty( pro5, model.createTypedLiteral( 60) );
Individual in0=Aclass1.createIndividual(ns+"in2");
in0.addProperty(pro2,in1);
Individual in=class1.createIndividual(ns+"indi");
in.addProperty(pro1, in0);
当 运行
时出现以下异常
Exception in thread "main" com.hp.hpl.jena.ontology.ProfileException: Attempted to use language construct DATATYPE_PROPERTY that is not supported in the current language profile: RDFS
at com.hp.hpl.jena.ontology.impl.OntModelImpl.checkProfileEntry(OntModelImpl.java:3058)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.createDatatypeProperty(OntModelImpl.java:1395)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.createDatatypeProperty(OntModelImpl.java:1375)
at test1.Hello.main(Hello.java:46)
我做错了什么,有更好的方法吗?
规范是错误的,它不支持owl:DatatypeProperty(以及很多来自 OntModel 的东西),但只支持 RDFS 词汇。
尝试OntModelSpec.OWL_DL_MEM。它应该消除异常。
但请注意:OntModelSpec#OWL_DL_MEM 是关于 OWL1-DL,而不是 OWL2DL。耶拿根本不支持 OWL2。
如果您想在 Jena 中使用完整的 OWL2DL 规范,您可以查看 ONT-API,它是基于 jena 的 OWL-API。
以下机型
我需要为 class1 创建个人,并为创建的个人设置 属性4 和 属性5 的文字值。 为此,我正在为 Anonymous class2(in1) 创建个人并为其设置 属性 值。然后我为匿名 class1(in0) 创建个人并使用 add属性(属性2,in1),我再次为 class1(in) 创建个人并使用添加属性(属性1,in0).
String ns = "url.com";
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM);
OntClass class1 = model.createClass(ns+"class1");
OntClass Aclass1= model.createClass();
OntClass Aclass2= model.createClass();
OntProperty pro1 = model.createOntProperty(ns + "pro1");
OntProperty pro2 = model.createOntProperty(ns + "pro2");
OntProperty pro3 = model.createOntProperty(ns + "pro3");
DatatypeProperty pro4 = model.createDatatypeProperty(ns + "pro4");
DatatypeProperty pro5 = model.createDatatypeProperty(ns + "pro5");
Individual in1 = Aclass2.createIndividual(ns + "in1");
in1.addProperty( pro4, model.createTypedLiteral( 50 ) )
.addProperty( pro5, model.createTypedLiteral( 60) );
Individual in0=Aclass1.createIndividual(ns+"in2");
in0.addProperty(pro2,in1);
Individual in=class1.createIndividual(ns+"indi");
in.addProperty(pro1, in0);
当 运行
时出现以下异常Exception in thread "main" com.hp.hpl.jena.ontology.ProfileException: Attempted to use language construct DATATYPE_PROPERTY that is not supported in the current language profile: RDFS
at com.hp.hpl.jena.ontology.impl.OntModelImpl.checkProfileEntry(OntModelImpl.java:3058)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.createDatatypeProperty(OntModelImpl.java:1395)
at com.hp.hpl.jena.ontology.impl.OntModelImpl.createDatatypeProperty(OntModelImpl.java:1375)
at test1.Hello.main(Hello.java:46)
我做错了什么,有更好的方法吗?
规范是错误的,它不支持owl:DatatypeProperty(以及很多来自 OntModel 的东西),但只支持 RDFS 词汇。
尝试OntModelSpec.OWL_DL_MEM。它应该消除异常。
但请注意:OntModelSpec#OWL_DL_MEM 是关于 OWL1-DL,而不是 OWL2DL。耶拿根本不支持 OWL2。
如果您想在 Jena 中使用完整的 OWL2DL 规范,您可以查看 ONT-API,它是基于 jena 的 OWL-API。