Prevent property inheritance

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Prevent property inheritance

Yagmur
Hello,

I am currently working on a financial ontology. I would like to know if
there is a way to prevent subclasses from inheriting some superclass'
properties.
The main superclasses are Indicators (containing the structure of financial
indicators such as assets and liabilities for example), Standards
(containing financial reporting standards labels such as IFRS), and Sector
(containing industrial sectors for sector-specific indicators).
Indicator classes are linked to Standards through the hasStandard Object
Property. The thing is that every subclass does not always have the same
standards as their superclass.
For example there is the indicator class TotalAssets with the following
property : hasStandard some IFRS, hasStandard some French_GAAP.
CurrentFinancialAssets is a subclass of TotalAssets but should only have the
following property : hasStandard only IFRS. However, since it is a subclass
of TotalAssets, it automatically inherits its superclass' properties
hasStandard some IFRS, hasStandard some French_GAAP. Is there a way to
prevent this inheritance ?
(I have the same problem for the hasSector property)

Yagmur



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Prevent property inheritance

Lorenz Buehmann
That is impossible. OWL inference is monotonic. You can't undo things or
prevent inferred facts. The obvious way here is to rethink your
modeling. If something doesn't hold for all subclasses, you can't attach
the information to the superclass. I doubt that there is so many
subclasses such that this won't be feasible, right?

On 22.08.19 10:26, Yagmur wrote:

> Hello,
>
> I am currently working on a financial ontology. I would like to know if
> there is a way to prevent subclasses from inheriting some superclass'
> properties.
> The main superclasses are Indicators (containing the structure of financial
> indicators such as assets and liabilities for example), Standards
> (containing financial reporting standards labels such as IFRS), and Sector
> (containing industrial sectors for sector-specific indicators).
> Indicator classes are linked to Standards through the hasStandard Object
> Property. The thing is that every subclass does not always have the same
> standards as their superclass.
> For example there is the indicator class TotalAssets with the following
> property : hasStandard some IFRS, hasStandard some French_GAAP.
> CurrentFinancialAssets is a subclass of TotalAssets but should only have the
> following property : hasStandard only IFRS. However, since it is a subclass
> of TotalAssets, it automatically inherits its superclass' properties
> hasStandard some IFRS, hasStandard some French_GAAP. Is there a way to
> prevent this inheritance ?
> (I have the same problem for the hasSector property)
>
> Yagmur
>
>
>
> --
> Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Prevent property inheritance

Yagmur
That is what I actually did to avoid this problem. But I wondered if there
was a way to prevent the inheritance.
Because later, after an update, a subclass belonging to two standards
(hasStandard some IFRS, hasStandard some French_GAAP) can become a
superclass with its new subclass belonging to only one standard (hasStandard
IFRS).
Then do you have a suggestion to better represent this type of information ?

Yagmur



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Prevent property inheritance

Michael DeBellis-2
First, you should understand that there are important differences between properties in OWL and properties in standard Object-Oriented languages. I recommend you read A Semantic Primer for OO Developers:  https://www.w3.org/2001/sw/BestPractices/SE/ODSD/  

So when you say "However, since it is a subclass of TotalAssets, it automatically inherits its superclass' properties" strictly speaking that isn't true. Properties in OWL don't belong to any class. They are first class things that exist independently of classes. You can have properties with no domain or range. I know this seems like a nit but a better way to say this is: " since it is a subclass of TotalAssets, it is in the domain of all properties that have any of its superclass as a domain"  I.e., things CAN be asserted about it but there is no requirement or expectation that they necessarily ARE. 

I'm not sure I followed your example but cardinality restrictions may be a way to model what you want. So for example if I was modeling Person I could have a property called "hasSibling some Person". However, if I wanted a new class called OnlyChild for people who have no siblings I could add the axiom "hasSibling max 0 Person". I.e., an OnlyChild can have at most 0 siblings i.e., they can't have any values for that property. 

Michael

On Thu, Aug 22, 2019 at 3:11 AM Yagmur <[hidden email]> wrote:
That is what I actually did to avoid this problem. But I wondered if there
was a way to prevent the inheritance.
Because later, after an update, a subclass belonging to two standards
(hasStandard some IFRS, hasStandard some French_GAAP) can become a
superclass with its new subclass belonging to only one standard (hasStandard
IFRS).
Then do you have a suggestion to better represent this type of information ?

Yagmur



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Prevent property inheritance

Yagmur
Thank you for the link, I will take a look at it !

What I meant by "it automatically inherits its superclass' properties" was
that if Person hasSibling some Person is true, it will be true for all its
subclasses.

I don't think that this can be resolved with cardinality restriction since
all classes and subclasses must have at least one standard in this ontology.

I have a Superclass TotalAssets, and its subclass CurrentFinancialAssets.
TotalAssets hasStandard some IFRS and hasStandard some French_GAAP. Whereas
CurrentFinancialAssets hasStandard only IFRS.
But this is not possible since CurrentFinancialAssets inherits TotalAssets
features (meaning the two hasStandard "links" above).

Yagmur



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Prevent property inheritance

Michael DeBellis-2
Sorry, my mistake you are correct my example was wrong. But remember the way to think about classes in Protege is as sets not as classes in OOP that inherit from each other. This is just a matter of terminology because I understood what you meant and you were correct but just something to keep in mind. 

So if I have an axiom on some class Foo that says it hasBar some Bar I can't (as I incorrectly did in my previous message) make a subclass of Foo called BarLessFoo with the axiom hasBar max 0 Bar.  Or rather I can but the reasoner will rightly classify it as a subclass of owl:Nothing which means that it's impossible for any individual to be an instance of that class. Which makes sense because I can't say something both has some Bar and has 0 Bars. 

Getting back to your example what I would do is to create a new superclass of TotalAssets (e.g., call it Assets) that has all the axioms that were originally on TotalAssets except the axiom about hasStandard. I would make the domain of hasStandard be Assets but there would be no axioms on the number of Standards on Assets. Instead I would put those axioms on TotalAssets and CurrentFinancialAssets which would both be subclasses of Assets but they are now siblings rather than one being a superclass of the other. 

Michael

On Fri, Aug 23, 2019 at 6:56 AM Yagmur <[hidden email]> wrote:
Thank you for the link, I will take a look at it !

What I meant by "it automatically inherits its superclass' properties" was
that if Person hasSibling some Person is true, it will be true for all its
subclasses.

I don't think that this can be resolved with cardinality restriction since
all classes and subclasses must have at least one standard in this ontology.

I have a Superclass TotalAssets, and its subclass CurrentFinancialAssets.
TotalAssets hasStandard some IFRS and hasStandard some French_GAAP. Whereas
CurrentFinancialAssets hasStandard only IFRS.
But this is not possible since CurrentFinancialAssets inherits TotalAssets
features (meaning the two hasStandard "links" above).

Yagmur



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user