[Pellet-users] how to fetch individuals with certain properties
Alexander Becker
trennung at weinenvorglueck.de
Mon Jun 9 18:05:50 UTC 2008
Hi!
Thats right, I don't care exactely what is contained in the hasTag property, I just want to see if there is any hasTag property defined.
But even if I name the OWLConstant to one of the individuals I have in the ontology (as seen in {hasTag=["NPM"^^string], hasTier=["pos"^^string]}m so I name it "NPM"), I don't get any results.
Again, my code so far:
[code]
@Test
/**
* Fetch some individuals with certain properties.
*/
public void proptest() {
OWLDataFactory factory = OWLManager.createOWLOntologyManager().getOWLDataFactory();
OWLDataProperty dataprop = factory.getOWLDataProperty(URI.create(url + "#hasTag"));
OWLDataType stringDataType = factory.getOWLDataType(URI.create("http://www.w3.org/2001/XMLSchema#string"));
OWLConstant constant = factory.getOWLTypedConstant("NPM", stringDataType);
//OWLConstant constant = factory.getOWLUntypedConstant("NPN");
OWLRestriction restriction = factory.getOWLDataValueRestriction(dataprop, constant);
Set<OWLIndividual> rv = reasoner.getIndividuals(restriction, true);
System.out.println(rv);
}
[/code]
HTH, Alex
PS: Thanks for the for loop thing. It reminds me of Perl, so I like it :)
-------- Original-Nachricht --------
> Datum: Mon, 9 Jun 2008 18:45:09 +0100
> Von: "robert davey \\(JIC\\)" <robert.davey at bbsrc.ac.uk>
> An: "Alexander Becker" <trennung at weinenvorglueck.de>
> Betreff: RE: RE: [Pellet-users] how to fetch individuals with certain properties
> I'm guessing it's because you are looking for the hasTag property, filled
> with "test" as the typed constant datavalue. Unless a data property is in
> your ontology that has this value and is referenced to an individual, you
> won't get any results back. I presume you are looking for all individuals
> that have _any_ value in the hasTag property?
>
> As an aside, I see you're using java 1.5 (with generics), so you can use
> the nice for loop function instead of an iterator. As you have typed the
> all_ind set to OWLIndividual, so:
>
> Iterator ii = all_ind.iterator(); // ii = individual iterator
> while( ii.hasNext() ) {
> OWLIndividual ind = (OWLIndividual) ii.next();
>
> becomes:
>
> for (OWLIndividual i : all_ind)
>
> and you can do away with the casting as a result too.
>
> Hope this helps,
>
> Rob
>
> -----Original Message-----
> From: Alexander Becker [mailto:trennung at weinenvorglueck.de]
> Sent: Mon 6/9/2008 6:04 PM
> To: robert davey (JIC)
> Subject: Re: RE: [Pellet-users] how to fetch individuals with certain
> properties
>
> Hi Rob,
>
> thanks for the exapmle and the link. I didn't found that one.
> But now, after knowing how the way to use those things, I'm stuck with
> fetching the properties.
>
> I can get them from a known individual this way:
> [code]
> @Test // it's a junit test case that i abuse to test small pieces of
> code
> /**
> * Show the properties of an individual.
> */
> public void get_props() {
> Set<OWLIndividual> all_ind = reasoner.getIndividuals();
>
> System.out.println("individual count: " + all_ind.size());
>
> Iterator ii = all_ind.iterator(); // ii = individual iterator
> while( ii.hasNext() ) {
> OWLIndividual ind = (OWLIndividual) ii.next();
>
> Map<OWLDataProperty,Set<OWLConstant>> props =
> reasoner.getDataPropertyRelationships(ind);
>
> System.out.println(props.toString());
> break;
> }
>
> }
> [/code]
>
> The output is:
> [quote]
> individual count: 417
> {hasTag=["NPM"^^string], hasTier=["pos"^^string]}
> [/quote]
>
> And now, I want to do it the other way, fetch some Individuals that have a
> property:
> [code]
> @Test
> /**
> * fetch some individuals with certain properties.
> */
> public void proptest() {
> OWLDataFactory factory =
> OWLManager.createOWLOntologyManager().getOWLDataFactory();
> OWLDataProperty dataprop =
> factory.getOWLDataProperty(URI.create(ontURI.toString() + "#hasTag"));
>
> OWLDataType stringDataType =
> factory.getOWLDataType(URI.create("http://www.w3.org/2001/XMLSchema#string"));
>
> OWLConstant constant = factory.getOWLTypedConstant("test",
> stringDataType);
> OWLRestriction restriction =
> factory.getOWLDataValueRestriction(dataprop, constant);
>
> Set<OWLIndividual> rv = reasoner.getIndividuals(restriction, true);
>
> System.out.println(rv);
> }
> [/code]
>
> But that doesn't work as I get an empty set as resut (output = "[]").
>
> So, where is my mistake?
>
> Cheers, Alex
>
> -------- Original-Nachricht --------
> > Datum: Sun, 8 Jun 2008 17:14:51 +0100
> > Von: "robert davey \\(JIC\\)" <robert.davey at bbsrc.ac.uk>
> > An: trennung at weinenvorglueck.de, pellet-users at lists.owldl.com
> > Betreff: RE: [Pellet-users] how to fetch individuals with certain
> properties
>
> > Hi Alex,
> >
> > You can create OWLDescriptions from any implementing class, such as
> > OWLRestriction:
> >
> > OWLDataFactory factory =
> > OWLManager.createOWLOntologyManager().getOWLDataFactory();
> > OWLDataProperty dataprop =
> > factory.getOWLDataProperty("http://ontology/uri#hasTag");
> > OWLConstant constant = factory.getOWLTypedConstant("test",
> > "http://www.w3.org/2001/XMLSchema#string");
> > OWLRestriction restriction =
> factory.getOWLDataValueRestriction(dataprop,
> > constant);
> >
> > I'm pretty sure there are some examples of how to do this in the OWLAPI
> > examples...
> >
> >
> http://owlapi.svn.sourceforge.net/viewvc/owlapi/owl1_1/trunk/examples/src/main/java/org/coode/owlapi/examples/Example7.java
> >
> > Cheers
> >
> > Rob
> >
> > ---------------------------------------
> > Dr. Rob Davey
> > NCYC / Institute of Food Research
> > Computational Biology / John Innes Centre
> > Norwich Research Park
> > Norwich, Norfolk, NR4 7HU
> >
> > Tel IFR : +44 (0)1603 251449 / x1449
> > Tel JIC : +44 (0)1603 450833 / x2833
> > Web : http://cbr.jic.ac.uk/dicks/
> > ---------------------------------------
> >
> >
> >
> > -----Original Message-----
> > From: pellet-users-bounces at lists.owldl.com on behalf of
> > trennung at weinenvorglueck.de
> > Sent: Sat 6/7/2008 4:55 PM
> > To: pellet-users at lists.owldl.com
> > Subject: [Pellet-users] how to fetch individuals with certain properties
> >
> > Hello!
> >
> > I want to get all individuals, that have some properties.
> > They must have one of these: hasTag, startswith or endswith. hasTag is
> an
> > OWLDataProperty, as I get (with some others) via: Set<OWLDataProperty>
> > my_dprops = reasoner.getDataProperties();
> >
> > Is it possible, to create an OWLDescription and get all matching
> > individuals
> > like that:
> > [code]
> > OWLDescription clsC = new OWLDescription(); // OWLDescription is
> abstract,
> > doesn't work that way.
> >
> > // public Set<OWLIndividual> getIndividuals(OWLDescription clsC,
> > boolean direct)
> > Set<OWLIndividual> results = reasoner.getIndividuals(clsC,
> false);
> > [/code]
> >
> > If so, my primary question is: how do I create the OWLDescription?
> >
> > best regards, Alex
> > --
> > Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
> > Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer
> > _______________________________________________
> > Pellet-users mailing list
> > Pellet-users at lists.owldl.com
> > http://lists.owldl.com/mailman/listinfo/pellet-users
> > _______________________________________________
> >
> > Sponsored by Clark & Parsia, LLC http://clarkparsia.com/
>
> --
> Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
> Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
--
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
More information about the Pellet-users
mailing list