All codes involved have been listed in my original post. It seems that I just used the default . And individual model has nothing else. I don't know what's wrong.
-----邮件原件----- 发件人: Dave Reynolds [mailto:[email protected]] 发送时间: 2014年9月9日 15:12 收件人: [email protected] 主题: Re: 答复: why does the addDomain method affect the domain's SuperClass? Don't know. What reasoner configuration are you using? Is there any other data in the "individuals" model? Dave On 09/09/14 08:07, huang huiliang wrote: > Thank you for your suggestion ,Dave. I modify my code as you said. > Before p.addDomain(class2) ,the class2's SupClass is : > http://www.xxx.org.cn/standards/publishing/ontology/cores/class1. > But after p.addDomain(class2) execute ,class2's has two SupClasses. > http://www.w3.org/2000/01/rdf-schema#Resource is added to class2's > SupClasses. > Now the question is : why would addDomain(class2) add rdfs:Resouce to > class2's SupClasses. > Thanks for your attention. > -----邮件原件----- > 发件人: Dave Reynolds [mailto:[email protected]] > 发送时间: 2014年9月9日 14:51 > 收件人: [email protected] > 主题: Re: why does the addDomain method affect the domain's SuperClass? > > On 09/09/14 07:40, huang huiliang wrote: >> I'm creating an ontology from excel files and I have some problems to >> make my program work. >> >> The first problem I encounter is that I can't get the right >> superclass .The simplest code example is below. >> >> Code begin: >> >> OntModel individuals = ModelFactory.createOntologyModel(); >> >> TreeMap<String, String> namespaces=new >> TreeMap<String,String>(); >> >> namespaces.put("pubo", >> "http://www.xxx.org.cn/standards/publishing/ontology/cores/"); >> >> individuals.setNsPrefixes(namespaces); >> >> OntClass >> class1=individuals.createClass(namespaces.get("pubo")+"class1"); >> >> class1.setLabel("class1", "en"); >> >> OntClass >> class2=individuals.createClass(namespaces.get("pubo")+"class2"); >> >> class2.setLabel("class2", "en"); >> >> class2.setSuperClass(class1); >> >> System.out.println(class2.getSuperClass().getURI()); >> >> DatatypeProperty p = >> individuals.createDatatypeProperty(namespaces >> >> .get("pubo") + "haha"); >> >> p.addDomain(class2); >> >> System.out.println(class2.getSuperClass().getURI()); >> >> Code end >> >> The first output is: >> <http://www.xxx.org.cn/standards/publishing/ontology/cores/class1> >> http://www.xxx.org.cn/standards/publishing/ontology/cores/class1 >> >> The second output is : http://www.w3.org/2000/01/rdf-schema#Resource >> >> I have no idea why the two output are different? Have I done >> something wrong? Any suggestions? > > Mostly likely possibility is that getSuperClass is simply picking a > different random value from the set of super classes (see the javadoc). > I don't know if getSuperClass is supposed to list only direct > superclasses but if you are getting rdfs:Resource then probably not. > > Suggest using listSuperClasses(true) to find out what's going on. > > Dave >
