Hi,

Thanks for the reply.

Yes, I understood that.
But what is strange is that the class that gives an error (of the first
error) is defined in my file as

<owl:Class rdf:about="http://bla.bla/B";>

So it should be defined in the basic model as a class. Right ?




On 25 January 2013 21:40, Tayfun Gökmen Halaç
<[email protected]>wrote:

> 2013/1/25 Dave Reynolds <[email protected]>
>
> > On 25/01/13 14:25, Tayfun Gökmen Halaç wrote:
> >
> >> Hi,
> >>
> >> Nothing changes if the model creation is done by
> >> ModelFactory.**createOntologyModel(**OntModelSpec.OWL_MEM_TRANS_**INF)
> >> in my
> >> example code.
> >>
> >> What does "as(OntClass.class) part doesn't work" mean? If you get an
> >> exception like com.hp.hpl.jena.ontology.**ConversionException, your
> class
> >> resources do not have a type assertion.
> >>
> >
> > It means there's no type assertion on that class :)
>
>
>
>
> > By default OntModels work in strict mode, so to know that something can
> be
> > treated as a class it is looking for a statement that it is of type
> > owl:Class. If you have inference this may be inferred for you but in any
> > case it is best practice to explicitly declare classes.
> >
>
> Here's the example.
>
> OntModel model = ModelFactory
> .createOntologyModel(OntModelSpec.OWL_MEM_TRANS_INF);
> OntClass classA = model.createClass("http://bla.bla/A";);
> Resource classB = model.createResource("http://bla.bla/B";);
>
> classA.addDisjointWith(classB);
>
> ExtendedIterator<OntClass> classes = model.listClasses();
> while (classes.hasNext()) {
> OntClass ontClass = (OntClass) classes.next();
> System.out.println(ontClass);
> }
>
> If you create model with
> OntModelSpec.OWL_MEM_MICRO_RULE_INF,
> OntModelSpec.OWL_MEM_MINI_RULE_INF, OntModelSpec.OWL_MEM_RULE_INF,
> OntModel infers the class assertion for the class B. But, it is not done
> by OntModelSpec.OWL_MEM, OntModelSpec.OWL_MEM_RDFS_INF,
> OntModelSpec.OWL_MEM_TRANS_INF.
>
>
> >
> > You can use ontmodel.setStrictMode(false) to disable this checking.
> >
> > Dave
> >
> >
> >> Best,
> >> Tayfun
> >>
> >>
> >> 2013/1/25 Dave Reynolds <[email protected]>
> >>
> >>  You don't need to load your ontology twice. An OntModel is just a
> wrapper
> >>> round an underlying model so you can construct both a with-inference
> and
> >>> a
> >>> without-inference OntModel over the same Model.
> >>>
> >>> Dave
> >>>
> >>>
> >>> On 25/01/13 03:35, Emanuel Santos wrote:
> >>>
> >>>  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<
> >>>>> http://bla.bla/A>
> >>>>> ");
> >>>>> OntClass classB = model.createClass("http://bla.****bla/B<
> >>>>> http://bla.bla/B>
> >>>>> ");
> >>>>> OntClass classC = model.createClass("http://bla.****bla/C<
> >>>>> http://bla.bla/C>
> >>>>> ");
> >>>>> OntClass classD = model.createClass("http://bla.****bla/D<
> >>>>> 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
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >
>

Reply via email to