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。