Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7624597
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T05:00:20+00:00 2026-05-31T05:00:20+00:00

I look for a clearly OWL solution to define a property that is a

  • 0

I look for a clearly OWL solution to define a property that is a restriction of another property, similar to an equivalent class. Restriction is based on data properties of either the domain or the range. The restricted property is definitely a subproperty, and, must be inferred.

“kid”,”mother”,”father” are Person s
father.gender = “male” data property
mother.gender = “female”

(a Male subclassOf Person = equivalent class “gender value “male”)

father parentOf child ‘ object relation
mother parentOf child ‘ object relation

How to defined fatherOf property, based on parentOf and gender of father?
Clearly it is a subproperty of parentOf.

However, equivalent object property editor in Protégé does not allow setting a property query, even I do not really see if this can be solved with a property chain.

Defining fatherOf as subproperty and (manually) setting fatherOf instead of parentOf is not an option, since this family example is an oversimplified situation of a more complex scenario.

<Declaration>
    <Class IRI="#Person"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#fatherOf"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#parentOf"/>
</Declaration>
<Declaration>
    <DataProperty IRI="#gender"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#father"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#kid"/>
</Declaration>
<Declaration>
    <NamedIndividual IRI="#mother"/>
</Declaration>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#father"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#kid"/>
</ClassAssertion>
<ClassAssertion>
    <Class IRI="#Person"/>
    <NamedIndividual IRI="#mother"/>
</ClassAssertion>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#parentOf"/>
    <NamedIndividual IRI="#father"/>
    <NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<ObjectPropertyAssertion>
    <ObjectProperty IRI="#parentOf"/>
    <NamedIndividual IRI="#mother"/>
    <NamedIndividual IRI="#kid"/>
</ObjectPropertyAssertion>
<DataPropertyAssertion>
    <DataProperty IRI="#gender"/>
    <NamedIndividual IRI="#father"/>
    <Literal datatypeIRI="&rdf;PlainLiteral">male</Literal>
</DataPropertyAssertion>
<DataPropertyAssertion>
    <DataProperty IRI="#gender"/>
    <NamedIndividual IRI="#mother"/>
    <Literal datatypeIRI="&rdf;PlainLiteral">female</Literal>
</DataPropertyAssertion>
<SubObjectPropertyOf>
    <ObjectProperty IRI="#fatherOf"/>
    <ObjectProperty IRI="#parentOf"/>
</SubObjectPropertyOf>
<DataPropertyDomain>
    <DataProperty IRI="#gender"/>
    <Class IRI="#Person"/>
</DataPropertyDomain>
<DataPropertyRange>
    <DataProperty IRI="#gender"/>
    <Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T05:00:22+00:00Added an answer on May 31, 2026 at 5:00 am

    So, you have something like the following in your data:

    :x  :parentOf  :y .
    :x  :gender  "male" .
    

    and you would like to infer that:

    :x  :fatherOf  :y .
    

    I’m afraid you cannot do this in OWL. For cases like this one, you may want to rely on a rule language like SWRL, SPIN, etc. However, for the particular case of father, mother, etc, you could do the following:

    • define :hasParent as the inverse of :parentOf;
    • restrict the cardinality of :hasParent to 2;
    • define :hasFather as the inverse of :fatherOf;
    • make :hasFather a owl:FunctionalProperty;
    • define :hasMother as the inverse of :motherOf;
    • make :hasMother a owl:FunctionalProperty;
    • define the class :Man of male people;
    • define the class :Woman of female people;
    • make :Man disjointWith :Woman;
    • set the range of :hasFather to :Man;
    • set the range of :hasMother to :Woman.

    So the ontology looks like this (in Turtle because I’m not familiar with OWL/XML):

    :Person  a  owl:Class;
      rdfs:subClassOf  [
        a  owl:Restriction;
        owl:onProperty  :hasParent;
        owl:cardinality  2
      ] .
    :Man  a  owl:Class;
      owl:equivalentclass  [
        a  owl:Class;
        owl:intersectionOf (
          :Person
          [
             a  owl:Restriction;
             owl:onProperty  :gender;
             owl:hasValue  "male";
          ]
        )
      ] .
    :Woman  a  owl:Class;
      owl:equivalentclass  [
        a  owl:Class;
        owl:intersectionOf (
          :Person
          [
             a  owl:Restriction;
             owl:onProperty  :gender;
             owl:hasValue  "female";
          ]
        )
      ] .
    :gender  a  owl:DatatypeProperty, owl:FunctionalProperty .
    :hasParent  a  owl:ObjectProperty;
      owl:inverseOf  :parentOf;
      rdfs:domain  :Person;
      rdfs:range  :Person .
    :hasFather  a  owl:ObjectProperty, owl:FunctionalProperty;
      rdfs:subPropertyOf  :hasParent;
      rdfs:range  :Man .
    :hasMother  a  owl:ObjectProperty, owl:FunctionalProperty;
      rdfs:subPropertyOf  :hasParent;
      rdfs:range  :Woman .
    

    This should do the trick, but it’s a very complicated ontology and reasoning with it may be very slow.

    Edit: I added that :gender must be functional, otherwise there could be a mother who is at the same time a father and that would not work!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I look that nice documentation about Ext JS 4 applciation architecture. It tells clearly
Look at this example: http://jsfiddle.net/nvcode/BnGyu/2/ Now it is clearly obvious that the browser can
I recently discovered Python's property built-in , which disguises class method getters and setters
Someone recently took a look of my code and commented that it was too
(Yet another question from my Clearly I'm the only idiot out here series.) When
Update: 24 Mar 2011: Just wanted to add that I've had a look at
Firstly, I want to have a clearly overall look at MFC, Win32API . Is:
If you look at the source of Google pages with JavaScript, you'll find that
After a lot of searching I wasn't able to find anything that clearly describes
Look at this image: alt text http://img139.imageshack.us/img139/4488/picture2ep3.png I know how to add UITableView with

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.