Hello Irene,

thanks for your answer. It helps me a lot.
You are right, your first solution is better and I createted the ontology 
in a similar way. I will try to declare it.

O1 is my "mapped to" ontology,
O2 is my mapping concept and
O3 imports O1 and O2 and is used as concrete mapping for one datasource.
There is no ontology describing the datasource itself.
In O3 there are only individuals from the classes created in O2.

The external application will use these individuals to decide what to do 
with the data from the data source. Therfore every individual in O3 
contains a datatype property (d_i) which is used by the application to 
identify the type of the data from the data source.
E. g. if the data source is a data base the datatype property contains the 
names of the table and column. 
Furthermore every individual contains properties describing to the 
application what to do with every value (v) identified by (d_i). E. g. 
"Create an instance of type [class name] with the name [name] and the 
datatype property [property name] which contains the value v."

For the first part "Create an instance of type [class name]" I created an 
object property "O2:hasType" (I know it is not the best name for this 
property) which has the class "O2:Element" as domain and "owl:Class" as 
range. So I can define individuals (O3:E1, O3:E2, ...) of the class 
"Element" in O3 with the object property "O2:hasType" pointing to a class 
in O1. But it is still possible to have the property "O2:hasType" pointing 
to a class in O2 (e. g. the class "Element" itself). Therefore I need a 
restriction so that "O2:hasType" can only point to a class (not an 
instance) in O1. Is this possible? In all my tests using restrictions in 
the range of "O2:hasType" the Topbraid Composer allows me to point only to 
other individuals with "O2:hasType" while creating an instance like O3:E1 of 
"O2:Element".
So my first solution was to use an enumeration of all classes in O1 as 
range for "O2:hasType". But as you mentioned this will closing the world.

I hope my description is intelligible. I haven't used owl and the Topbraid 
Composer for several month and now I have to reorientate myself.

Regards,

Christoph



Am Montag, 11. November 2013 18:16:00 UTC+1 schrieb Irene Polikoff:
>
> Hi Christoph,
>
>  
>
> It is hard to have this discussion without knowing how you connect to 
> external data and other details of your application. And then it starts to 
> become consulting rather than a question about the capabilities of the 
> tool. So, I am going to be brief and make some assumption that may be 
> incorrect.
>
>  
>
> 1.       Assuming that the external source is a relational database or 
> similar, I would do the following:
>
>  
>
> ·         Have O1 as your ‘canonical’ or ‘mapped to’ model. 
>
> ·         Have O2 as the external data source model which would include 
> individual resources – the actual data (or there could be more modularity 
> as well – O2A is a schema of the data source, O2B imports O2A and has data, 
> etc.)
>
> ·         Create O3 that imports both O1 and O2 and connects them. In 
> this model, you would make statements like o2:Type1 rdfs:subClassOf 
> o1:Type. o2:hasType rdfs:range o1:Type can be in that model as well if 
> hasType belongs in O2 or if you would prefer not to say something like this 
> in O1. Or it could be stated in O1 if it makes more sense there.
>
>  
>
> Think of O3 as your mapping model. It can support multiple data sources. 
> Or you can have and even more modularity where there are multiple mapping 
> models – one per each data source and there is another ontology that 
> imports all mapping ontologies. There can be variations on this solution.
>
>  
>
> 2.       If, for some reason, you don’t like to use rdfs:range, you could 
> use OWL restriction saying something like the following (in the Manchester 
> syntax):
>
> :Element (rdfs:subClassOf) :hasType only :Type
>
>  
>
> It is not clear to me why this would be better than the range, but it is 
> an option. Both rdfs:range and restriction above operate under the open 
> world assumption where you could have new subclasses of Type or previously 
> existing subclasses could disappear. If you are to use owl:oneOf you are 
> effectively ‘closing the world’ y providing explicit enumeration and, 
> therefore, removing this flexibility.
>
>  
>
> Regards,
>
>  
>
> Irene Polikoff
>
>  
>
>  
>
> *From:* [email protected] <javascript:> [mailto:
> [email protected] <javascript:>] *On Behalf Of *chris
> *Sent:* Monday, November 11, 2013 11:48 AM
> *To:* [email protected] <javascript:>
> *Subject:* Re: [topbraid-users] List of subclasses as property range
>
>  
>
> Hello again,
>
> yes there is a reason. The real ontology is much more complex and I need a 
> way to add data to it form an external source with an external application.
> So my solution is to define a new ontology (o2) which imports the existing 
> ontology (o1) and assigns Elements from the external source to different 
> classes of the ontology (o1).
> I need a flexibe control over the assignment.
>
> In the ontology (o2) I want to define individuals the external application 
> can use to assign Elements form the source as individuals to classes of the 
> ontology (o1).
> Therefore I need a way to define one of the classes form (o1) which are 
> subclasses of the class "ont1" in the ontology (o2) as range for "hasType" 
> while creating the new individual.
> To avoid mistakes if someone else (or me in a few weeks;)) creates a new 
> assignment of a different datasource I would like to define the ontology 
> (o2) in a way that only the possible assignments are selectable.
> But if the ontology (o1) is changed, the possible range for the object 
> property "hasType" should also change automatically.
>
> If there is a better way to do the assignement I am greatful for any 
> suggestions.
>
> greetings
>
> Christoph
>
> Am Montag, 11. November 2013 16:33:11 UTC+1 schrieb Irene Polikoff:
>
> Chris,
>
>  
>
> Any reason why you would not simply  say that the range is class Type?
>
>
> On Nov 11, 2013, at 10:25 AM, chris <[email protected]> wrote:
>
> Hello,
>
> I have an ontology with a class "Element", a class "Type" with some 
> subclasses "Type_1", "Type_2", ..., and an object property "hasType" with 
> the class "Element" as domain and one of the subclasses from "Type" as 
> range like:
>
>   <owl:AsymmetricProperty rdf:ID="hasType">
>     <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string";>has 
> type</rdfs:label>
>     <rdfs:range>
>       <owl:Class>
>         <owl:oneOf rdf:parseType="Collection">
>           <rdf:Description rdf:ID="Type_1"/>
>           <rdf:Description rdf:ID="Type_2"/>
>         </owl:oneOf>
>       </owl:Class>
>     </rdfs:range>
>     <rdfs:domain rdf:resource="#Element"/>
>   </owl:AsymmetricProperty>
>
> So I am able to create a new Instance of the class "Element" and choose 
> "Type_1" or "Type_2" from a list as value for "hasType".
>
> But I want to define the range of the property "hasType" in a more 
> flexible way. Is it possible (e. g. with manchester syntax) to define the 
> range of the property "hasType" as one subclass of the class "Type"?
> E. g. if I add the subclass "Type_3" to the class "Type" it becomes 
> automatically part of the possible range from the object property "hasType".
>
> best regards
>
> Christoph
>
> -- 
> -- You received this message because you are subscribed to the Google
> Group "TopBraid Suite Users", the topics of which include Enterprise 
> Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid 
> Insight, SPARQLMotion, SPARQL Web Pages and SPIN.
> To post to this group, send email to
> [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/topbraid-users?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "TopBraid Suite Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
> -- 
> -- You received this message because you are subscribed to the Google
> Group "TopBraid Suite Users", the topics of which include Enterprise 
> Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid 
> Insight, SPARQLMotion, SPARQL Web Pages and SPIN.
> To post to this group, send email to
> [email protected] <javascript:>
> To unsubscribe from this group, send email to
> [email protected] <javascript:>
> For more options, visit this group at
> http://groups.google.com/group/topbraid-users?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "TopBraid Suite Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary 
Network (EVN), TopBraid Composer, TopBraid Live, TopBraid Insight, 
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to