Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to query individuals in DL Manchester OWL Syntax?

I know this sounds like a very stupid question, but I've been trying to figure this out and I can't find anything on this, though it seems obvious that this should be doable.

I'm developing something that queries an OWL file through its API using the Manchester OWL Syntax and a HermiT reasoner. I alternatively also run queries on the DL Query tab in Protege 4 to check my query results on that file. The file is basically the Friend Of A Friend (FOAF) ontology with added data instances.

The problem: I can't find a way to query an instance by its unique identifier.

It's supposed to be the URI so e.g. for a Person object with URI http://xmlns.com/foaf/0.1/Andrew_Kuchling, I tried to run the following queries:

Person and URI value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"

Person value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"

Person and URI value "Andrew_Kuchling"

Person that "Andrew_Kuchling"

none of these work. (The URI is constructed by prefixing http://xmlns.com/foaf/0.1/ to whatever string you enter and URI is not actually identified in the ontology as a property).

In FOAF, mbox_sha1sum is the sha1sum of a mailbox. Mailboxes are uniquely connected to individuals. So I tried the following query:

Person and mbox_sha1sum value "mbox_sha1sum-property-value-here"

However, it doesn't even execute this query because it feels the query is incorrect. The mbox_sha1sum value is the same that I've added for this Person. It exists in Individuals.

It does execute this query:

Person and firstName value "Andrew"

All data properties are not specialised data types. Treated as literals by default.

I really don't know what I'm doing wrong. Can someone please please help?

like image 880
Rida Khan Avatar asked May 22 '11 05:05

Rida Khan


1 Answers

I know this question has been posted more than a year ago, but I recently asked me the same question and found the following solution:

Just put the name of the individual/member you want to query for in curly brackets:

{MyIndividualEntityName}

This way you can even query for more than one individual at a time:

{IndividualName1,IndividualName2}

Please note that these queries form class expressions of so called enumarated classes. This means, that the result of this query will not simply be a list of all super or sub classes of all the individuals you have named in your query. Instead it refers to an anonymous class that consists of exactly the individuals you have listed. An anonymous class is a class that isn't available from outside of your ontology, because there is no referrable owl entity for this class (no IRI to refer to).

You can find more information on the OWL Manchester Syntax in the offcial W3C specification.

like image 113
benjiman Avatar answered Jan 12 '23 15:01

benjiman