Jena Ontology API:通过匿名类为个人添加属性值

时间:2017-02-03 21:28:28

标签: jena owl ontology

以下型号

enter image description here

我需要为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)

我做错了什么,有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

规范是错误的,它不支持owl:DatattypeProperty(以及来自OntModel的很多东西),但只支持RDFS词汇。

尝试OntModelSpec.OWL_DL_MEM。它应该消除异常。

但请注意:OntModelSpec#OWL_DL_MEM是关于OWL1-DL,而不是OWL2DL。 Jena根本不支持OWL2。

如果你想使用jena的完整OWL2DL规范,你可以查看基于jena的ONT-API