2017-02-03 121 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