[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