Data property on an object property: Modeling 1 ..* relationship with an attribute?

5 views
Skip to first unread message

Eric Bara

unread,
Mar 9, 2010, 6:24:32 AM3/9/10
to Ontology Online
I want to model an ontology that allows me to model a supply chain
management of a company.
In this context, I have a Product class that represents a product and
a Provider class that represents a provider.
An object property that I called [hasProvider] connects the 2 classes
between them.

Thus, graphically modeled:


PRODUCT ----------------> PROVIDER
hasProvider


However, in the model of a supply management, a product may be
provided by more than one supplier.
The relationship is thus becomes:


PRODUCT (1) ---------------> (*) PROVIDER
hasProvider


I would put the price of a product at 1 supplier.
In traditional data modeling (entity / relationship), I must place
the
PRICE attribute in an entity through which connects PRODUCT to
PROVIDER and either:


PRODUCT (1) ------> (1) hasProvider (1) ------> (1) PROVIDER 1
(1) PRICE
|
+-----------> (1) hasProvider (1) ------> (1) PROVIDER 2
PRICE


Suppose I create a resource [Stencil] of class PRODUCT.
I find this pencil from the supplier [Bic] priced at € 15 and in
[Stadler] priced at € 14.50.
I, on the model above, a record of type PRODUCT and two records of
type hasProvider, one containing the price 15 € and connected
(Foreign
Key) to the registration type PROVIDER [Bic] and the other containing
the price and related € 14.50 (Foreign Key) to the registration type
PROVIDER [Stadler].


In OWL, if I want to assign a value to a resource, I have to use a
property database.
This property may be associated in the same way as the diagram below,
thus creating an intermediate class.
Is it possible to do otherwise?
Indeed, the class "hasProvider" schema above no real reason to exist
as a concept in the ontology.
It exists only for technical reasons.


David Decraene

unread,
Mar 9, 2010, 6:37:11 AM3/9/10
to Ontology Online
Perhaps you could create a class 'Stencil', subclass of product, with
two instances, as the two stencils are to be considered different, e.g
different instances:

Stencil instance From Bic:
price(property) : 15 euro
vendor(property): Bic
Stencil instance From Stadler
price: 14.5 euro
vendor: stadler

where vendor (or provider) property ranges from Product to 'Provider'
Better would be to range to something that can be a generalisation of
person/company/etc (superclass). No need to create a class called
provider, this is redundant indeed and narrows the use of the target
instance too much.

Company instance: Bic
Company instance: stadler.

Reply all
Reply to author
Forward
0 new messages