[Pellet-users] how to fetch individuals with certain properties

Evren Sirin evren at clarkparsia.com
Wed Jun 11 13:43:32 UTC 2008


Try retrieving all the instances of the restriciton not just direct 
instances, i.e.:

reasoner.getIndividuals(restriction, false);


I believe there is a problem with retrieving direct instances of 
anonymous concepts (I've recorded the issue in the tracker [1]). If you 
are still having problems please send a minimal but complete example 
showing both the code and dat you are using so we can be sure there are 
no URI issues or anything like that.

Cheers,
Evren

[1] http://cvsdude.com/trac/clark-parsia/pellet-devel/ticket/128

On 6/9/08 4:52 PM, Alexander Becker wrote:
> 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/
>>     
>
>   



More information about the Pellet-users mailing list