[Pellet-users] how to fetch individuals with certain properties
Alexander Becker
trennung at weinenvorglueck.de
Mon Jun 9 20:52:09 UTC 2008
Hm, I tried it (I think), but I still get noe individuals. They are in there, I can fetch them via reasoner.getIndividuals(), and thy have that property.
But the following code doesn't work, as the result is an empty set:
[code]
@Test
/**
* Get all individuals that have a hasTag property.
*/
public void test_prop() {
OWLDataFactory factory = OWLManager.createOWLOntologyManager().getOWLDataFactory();
OWLDataProperty hasTag = factory.getOWLDataProperty(URI.create(url + "#hasTag"));
OWLRestriction restriction = factory.getOWLDataSomeRestriction(hasTag, factory.getTopDataType());
Set<OWLIndividual> rv = reasoner.getIndividuals(restriction, true);
System.out.println(rv);
}
[/code]
Maybe there is something wrong with the way I declare the property?
OWLDataProperty hasTag = factory.getOWLDataProperty(URI.create(url + "#hasTag"));
url is the foll uri to the ontology. it's a valid rdf file.
Is the attribute always located like this? I mean, where do I know, that the property is declares by http://host/uri#hasTag ? I opened the file, and there is nowhere a #hasTag.
Cheers, Alex
-------- Original-Nachricht --------
> Datum: Mon, 9 Jun 2008 19:47:04 +0100
> Von: Matthew Horridge <matthew.horridge at cs.man.ac.uk>
> An: pellet-users at lists.owldl.com
> Betreff: Re: [Pellet-users] how to fetch individuals with certain properties
> Hi Alex,
>
> I think you also might be able to get the individuals by asking for
> instances of "hasTag some rdfs:Literal".... rdfs:Literal is the top
> datatype. To do this in the OWL API you can create an
> OWLDataSomeRestriction with the property hasTag and a filler of
> rdfs:Literal which you can get from the data factory using
> getTopDatatype. You can then ask Pellet (via the OWLReasoner
> interface) for instances of this restriction.
>
> Cheers,
>
> Matthew
>
>
> On 9 Jun 2008, at 19:05, Alexander Becker wrote:
>
> > 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
> > _______________________________________________
> > 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/
>
> _______________________________________________
> 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/
--
GMX startet ShortView.de. Hier findest Du Leute mit Deinen Interessen!
Jetzt dabei sein: http://www.shortview.de/?mc=sv_ext_mf@gmx
More information about the Pellet-users
mailing list