以下型号
我需要为class1创建个体,并为创建的个体设置property4和property5的文字值。 为此,我正在为Anonymous class2(in1)创建个人并为其设置属性值。然后我为Anonymous class1(in0)创建个体并使用addproperty(property2,in1),再次为类1(in)创建个体并使用addproperty(property1,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)
我做错了什么,有更好的方法吗?
答案 0 :(得分:1)
规范是错误的,它不支持owl:DatattypeProperty(以及来自OntModel的很多东西),但只支持RDFS词汇。
尝试OntModelSpec.OWL_DL_MEM。它应该消除异常。
但请注意:OntModelSpec#OWL_DL_MEM是关于OWL1-DL,而不是OWL2DL。 Jena根本不支持OWL2。
如果你想使用jena的完整OWL2DL规范,你可以查看基于jena的ONT-API。