2011/5/23 Dave Reynolds <[email protected]>
> On Mon, 2011-05-23 at 12:43 +0800, 朱曼 wrote:
> > Hi list,
> >
> > In the following code, I try to create an ontology model with pellet,
> > then I create an anonymous class which is complement to an existed
> > class "Mother"(see details from the attached ontology test.owl), and I
> > want to print "not Mother", but the results appear to be:
> >
> > not (Female) (Mother)
> > not Female
> >
>
> If you try without a reasoner (use OntModelSpec.OWL_MEM) you will
> probably get what you want.
>
> Why Pellet is inferring the extra complementOf relation is hard to tell
> without seeing the ontology.
>
In the ontology, Mother is a subClass of Female, and the ontology is created
according to actual facts.
If I create a complement class of "Female", listOperands() also return
Female and Mother.
>
> Dave
>
> > Are there convenient ways to print "not Mother" directly?
> >
> >
> ---------------------------------------------------------------------------------------------------------------------------------------
> > OntModel m =
> > ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC);
> > m.read("test.owl");
> > OntClass c = m.getOntClass(m.getNsPrefixURI("") + "Mother");
> > OntClass newCls = m.createComplementClass(null, c);
> > if (newCls.isComplementClass()) {
> > System.out.print("not");
> > for (ExtendedIterator<? extends OntClass> iter =
> > newCls.asComplementClass().listOperands(); iter.hasNext(); )
> > System.out.print(" (" + iter.next().getLocalName() +
> > ") ");
> > System.out.print("\nnot ");
> >
> >
> System.out.println(newCls.asComplementClass().getOperand().getLocalName());
> >
> > }
> >
> ------------------------------------------------------------------------------------------------------------------------------------------
> >
> > All the best,
> >
> > June
>
>
>
>