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

Alexander Becker trennung at weinenvorglueck.de
Sat Jun 14 13:52:06 UTC 2008


Hi!

So, we took a closer look at the ontologies and found out some bugs.
First of all, retrieving the instances direct may never work, as they are 
linked to a comoon reference model by some rdf files.
-> fetching them not direct works!

Then, we found some problems in the data. The ontologies seem to not contain 
the properties. That's a curisous phenomen, as the props are declared in all 
owl files, but only for one, I can access them by the reasoner. The 
ontologies are constistent (says the reasoner). At this point, I need to do a 
little more research :)

Thanks for all the advice! It helped a lot.

Best regards, Alex

-------- Original-Nachricht --------
> Datum: Wed, 11 Jun 2008 09:43:32 -0400
> Von: Evren Sirin <evren at clarkparsia.com>
> An: Alexander Becker <trennung at weinenvorglueck.de>
> CC: pellet-users at lists.owldl.com
> Betreff: Re: [Pellet-users] how to fetch individuals with certain properties

> 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/
> >>     
> >
> >   

-- 
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger


More information about the Pellet-users mailing list