2017-02-03 122 views
0

单个添加属性值以下模型耶拿本体API:通过匿名类

enter image description here

我需要创建Class1的个人和property4和property5用于创建个人设置文字值。 为此,我为Anonymous class2(in1)创建个人并为其设置属性值。然后我为Anonymous class1(in0)创建个人并使用addproperty(property2,in1),再次为类1创建个人并使用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

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

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

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

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