[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