Hi Irene, Thank you so much for the analysis and recommendation! We do like approach 1.
Is it possible to combine approach 1 and 2 and achieve the effect of 1? With approach 2 (this is what we currently have): :DecisionAnalsysisMethod, :MultiCriteriaDecisionanalsysisMethod, :CriterionWeightingMethod, :PairwiseComparison, :AlternativeScreeningMethod a owl:Class :DecisionAnalsysisMethod rdfs:subClassOf owl:Thing :MultiCriteriaDecisionanalsysisMethod rdfs:subClassOf :DecisionAnalsysisMethod :CriterionWeightingMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod :PairwiseComparison rdfs:subClassOf :CriterionWeightingMethod :AlternativeScreeningMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod ... Plus, adding the "spirit" of approach 1: : DecisionAnalsysisMethodSet (SORRY for the bad name, just an example here) a owl:Class :MultiCriteriaDecisionanalsysisMethod a : DecisionAnalsysisMethodSet :CriterionWeightingMethod a : DecisionAnalsysisMethodSet :PairwiseComparison a : DecisionAnalsysisMethodSet :AlternativeScreeningMethod a : DecisionAnalsysisMethodSet ... (the methods classes now are instances of DecisionAnalsysisMethodSet class) And the properties for methods will be specified for DecisionAnalsysisMethodSet (and some methods will only fill out a subset of these properties...). And then in the application, we will get to the methods from either DecisionAnalsysisMethod or DecisionAnalsysisMethodSet depending on the need - if we want to display things in a hierarchy , start from DecisionAnalsysisMethod; if we want to put up a editing form for to edit the properties of a method, we start from DecisionAnalsysisMethodSet. I do get your point that other properties, not just rdfs:subClassOf, can be used to describe hierarchies (and instances can have hierarchies). Just wondering whether we could achieve similar effect this way, still keeping with the spirit of approach 1. Please let me know if you think this is a bad idea... Thank you very much for your help! Naicong From: [email protected] [mailto:[email protected]] On Behalf Of Irene Polikoff Sent: Monday, March 11, 2013 6:43 PM To: [email protected] Subject: RE: [topbraid-users] Modeling best practice question There is more than one modeling pattern you can use. Let's consider the following examples: Approach 1: : DecisionAnalsysisMethod a owl:Class (or it could be a :Method class) :MultiCriteriaDecisionanalsysisMethod a :DecisionAnalsysisMethod :CriterionWeightingMethod a :DecisionAnalsysisMethod :PairwiseComparison a :DecisionAnalsysisMethod :AlternativeScreeningMethod a :DecisionAnalsysisMethod :CriterionWeightingMethod skos:broader :MultiCriteriaDecisionanalsysisMethod :PairwiseComparison skos:broader :CriterionWeightingMethod :AlternativeScreeningMethod skos:broader :MultiCriteriaDecisionanalsysisMethod Pros: * You don't need to worry how far down the tree goes. If someone wants to add another analysis method, they just create one and use skos:broader to hang it in the appropriate place * You can define properties common to most decision analysis methods and use these fields when you describe the instances. Cons: * You don't have an easy way to identify properties unique to, for example, :CriterionWeightingMethod that must be present for things "under it" such as :PairwiseComparison. o The approach to use then is to include all properties in the decision analysis methods class definition and only enter the information if applicable. But, this means that if your situation is such that you want to autoclassify method instances, you could not use standard OWL inferencing to do this. You can still use SPIN to figure out which is a broader of which. This is the approach I would recommend based on what I heard about your requirements. The important point here is that instances (and not only classes) can be organized into hierarchies of their own and any property, not just rdfs:subClassOf can be used to describe hierarchies. Approach 2: :DecisionAnalsysisMethod, :MultiCriteriaDecisionanalsysisMethod, :CriterionWeightingMethod, :PairwiseComparison, :AlternativeScreeningMethod a owl:Class :MultiCriteriaDecisionanalsysisMethod rdfs:subClassOf :DecisionAnalsysisMethod :CriterionWeightingMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod :PairwiseComparison rdfs:subClassOf :CriterionWeightingMethod :AlternativeScreeningMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod Pros: * You don't need to worry how far down the tree goes. If someone wants to add another analysis method, they just create one as a class and use subclassOf to hang it in the appropriate place Cons: * You don't have an easy way to associate values with these resources since they are classes o You could use custom annotations, but then how to 'hang' them on the appropriate classes? o If you need to do this, you are forced to go into meta-modeling which is not supported by any OWL inferencers, is not really in the 'spirit' of RDFS/OWL, looks 'unusual' and tends to be complex to understand Approach 3: class:DecisionAnalsysisMethod, class:MultiCriteriaDecisionanalsysisMethod, class:CriterionWeightingMethod, class:PairwiseComparison, class:AlternativeScreeningMethod a owl:Class :MultiCriteriaDecisionanalsysisMethod rdfs:subClassOf :DecisionAnalsysisMethod :CriterionWeightingMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod :PairwiseComparison rdfs:subClassOf :CriterionWeightingMethod :AlternativeScreeningMethod rdfs:subClassOf :MultiCriteriaDecisionanalsysisMethod instance:MultiCriteriaDecisionanalsysisMethod a class:MultiCriteriaDecisionanalsysisMethod instance:CriterionWeightingMethod a class:CriterionWeightingMethod instance:PairwiseComparison a class:PairwiseComparison and so on Pros: * You don't need to worry how far down the tree goes. If someone wants to add another analysis method, they just create one as a class and use subclassOf to hang it in the appropriate place. They also create an appropriate instance. Owl:hasValue restrictions can be used to maintain the consistent relationship between classes graph and instances graph * You have an easy way to identify properties unique to, for example, :CriterionWeightingMethod. Define them for the appropriate class. Enter the value for the appropriate instance. Cons: * Considerably more complex model, harder to understand and maintain From: [email protected]<mailto:[email protected]> [mailto:[email protected]] On Behalf Of Li, Naicong Sent: Monday, March 11, 2013 8:36 PM To: [email protected]<mailto:[email protected]> Subject: [topbraid-users] Modeling best practice question Hi, I have a modeling best practice question, and I hope I can get some answers from the experienced ontology developers at this forum. I apologize if this is the wrong forum to do this - please let me know. I often have to code things that can be treated, from a practical perspective, either class or instance. For example, multi-criteria decision analysis methods. You can say they are all instances of the class MultiCriteriaDecisionanalsysisMethod, but they form a hierarchical structure too: MultiCriteriaDecisionanalsysisMethod CriterionWeightingMethod PairwiseComparison ... AlternativeScreeningMethod ... MultiAttributeCombinationMethod ... ... I have been coding all the methods as classes, since even for a method that is the leaf level method for now, some day someone may have developed some sub methods for it (e.g. we had SenstivityAnalysisMethod as a leaf class, which later got expanded to several sub methods such as SpatialSenstivityAnalysisMethod and AspatialSenstivityAnalysisMethod, each of which had their own sub-methods...). In the same time I have been treating them like instances in the sense that I have been using the properties specified on the top method class for all the sub classes - it's like treating the sub classes as the instances of the top class. I did this inside the Composer by simply dragging the properties into the Form view of a method subclass (and specify values for them). But of course I haven't been able to use some of the nicer functions in Composer for instances, such as the Form Layout view. My questions is, is there a way for me to create a method class to which all the methods above are instances? And in the same time keep my method class hierarchy? For example create a method class as a subclass under owl:Class, and add all the method classes above as instances to this new method class? Is this the right way to do it? What's the best practice? Thanks. Naicong ______________________________ Naicong Li, Ph.D. Redlands Institute, University of Redlands 1200 East Colton Avenue, PO Box 3080, Redlands, CA 92373-0999 Email: [email protected]<mailto:[email protected]> Phone: 909-748-8523 -- -- 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 Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected]<mailto:[email protected]> To unsubscribe from this group, send email to [email protected]<mailto:[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]<mailto:[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 Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected]<mailto:[email protected]> To unsubscribe from this group, send email to [email protected]<mailto:[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]<mailto:[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 Ensemble, 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.
