Hi Tayfun, Thank you so much!
That way only works if I choose a model without any class-hierarchy inference. Of course. When I'm working with a model with class-hierarchy inference (e.g. OWL_MEM_TRANS_INF ou a reasoner) can I still get the direct Disjointwith classes ?? I tried it getting them using the baseModel but the "as(OntClass.class)" part doesn't work. If there isn't any other way...I'm doomed to load 2x my ontology... it is not good :) Any ideas ? Thanks! best, Emanuel On 24 January 2013 22:32, Tayfun Gökmen Halaç <[email protected]>wrote: > Hi Emanuel, > > Not with a direct method. You can obtain those sets with a modified version > of previous solution. > > // create the ontology... > OntModel model = ModelFactory.createOntologyModel(); > OntClass classA = model.createClass("http://bla.bla/A"); > OntClass classB = model.createClass("http://bla.bla/B"); > OntClass classC = model.createClass("http://bla.bla/C"); > OntClass classD = model.createClass("http://bla.bla/D"); > > classA.addDisjointWith(classB); > classA.addDisjointWith(classC); > > classC.addDisjointWith(classD); > > // list disjoint sets... > ResIterator classesHasDisjoint = model > .listResourcesWithProperty(OWL.disjointWith); > while (classesHasDisjoint.hasNext()) { > OntClass cls = classesHasDisjoint.next().as(OntClass.class); > List<OntClass> disjointList = cls.listDisjointWith().toList(); > disjointList.add(0, cls); > System.out.println(disjointList); > } > > Console output: > [http://bla.bla/A, http://bla.bla/C, http://bla.bla/B] > [http://bla.bla/C, http://bla.bla/D] > > Best, > Tayfun > > > 2013/1/24 Emanuel Santos <[email protected]> > > > Hi, > > > > Thanks for the reply! > > > > Maybe I was not clear. > > > > For instance, given these classes: > > > > <owl:Class rdf:about="http://bla#A!> > > <owl:disjointWith rdf:resource="http:/bla#B"/> > > <owl:disjointWith rdf:resource="http:/bla#C"/> > > </owl:Class> > > > > <owl:Class rdf:about="http://bla#C"> > > <owl:disjointWith rdf:resource="http:/bla#D"/> > > </owl:Class> > > > > I want to obtain these sets : {A,B,C} and {C,D}. > > Only the direct classes. > > > > Thanks! > > > > > > > > > > > > > > On 24 January 2013 14:03, Fabio Aiub Sperotto <[email protected]> > > wrote: > > > > > Hi Emanuel, > > > > > > I don't know if I have a good solution for you (I'm not the best > > > programmer), but recently I made this: Search for all classes of > > ontology. > > > For each class X, return the set of classes that is disjoint with X: > > > > > > model.read(new InputStreamReader(in), ""); //read the ontology > > > > > > Iterator classes = model.listClasses(); //list all classes in > > > ontology > > > while (classes.hasNext()){ > > > OntClass ontologyClass = (OntClass) classes.next(); //get > one > > > class > > > > > > //get list of disjoint classes from ontologyClass > > > Iterator disjointClasses = > ontologyClass.listDisjointWith(); > > > > > > while(disjointClasses.hasNext()){ > > > System.out.print("Class "+ontologyClass.getLocalName()+" is > > > disjoint with: "); > > > System.out.println(disjointClasses.next()); > > > } > > > System.out.println(""); > > > > > > } > > > > > > This will help? My some mistake? > > > > > > > > > 2013/1/24 Emanuel Santos <[email protected]> > > > > > > > Hi, > > > > > > > > I just started using Jena. > > > > Any easyway to get all set of classes "disjointWith" ? > > > > > > > > Thanks > > > > > > > > > > > > > > > > -- > > > Fabio Aiub Sperotto > > > Mestrando em Modelagem Computacional > > > about.me/fabiosperotto > > > www.twitter.com/fabio_gk > > > > > >
