Class: OMF::SFA::Model::ModelClassDescription
- Inherits:
-
Base::LObject
- Object
- Base::LObject
- OMF::SFA::Model::ModelClassDescription
- Defined in:
- lib/omf-sfa/model/model_class_description.rb
Constant Summary collapse
- @@name2inst =
{}
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#ns ⇒ Object
readonly
Returns the value of attribute ns.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Class Method Summary collapse
Instance Method Summary collapse
- #add_child_class(class_model) ⇒ Object
- #add_property(prop_description) ⇒ Object
- #describe(level = 0, max_level = 99) ⇒ Object
- #describe_properties(prefix) ⇒ Object
-
#initialize(full_name) ⇒ ModelClassDescription
constructor
A new instance of ModelClassDescription.
- #parse(cel) ⇒ Object
-
#parse_super(el) ⇒ Object
TODO: Parsing of ‘Restriction’.
- #superklass ⇒ Object
- #to_s ⇒ Object
- #validate ⇒ Object
Constructor Details
#initialize(full_name) ⇒ ModelClassDescription
Returns a new instance of ModelClassDescription.
40 41 42 43 44 45 46 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 40 def initialize(full_name) @uri = full_name @ns, @name = full_name.split('#') super @name @properties = {} @children = [] end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
38 39 40 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 38 def name @name end |
#ns ⇒ Object (readonly)
Returns the value of attribute ns.
38 39 40 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 38 def ns @ns end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
38 39 40 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 38 def uri @uri end |
Class Method Details
.[](uri) ⇒ Object
13 14 15 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 13 def self.[](uri) @@name2inst[uri] end |
.create_from_xml(cel) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 29 def self.create_from_xml(cel) about = cel.attribute_with_ns('about', RDF_NS) name = xml_full_name(about.value, cel) klass = @@name2inst[name] ||= self.new(name) klass.parse(cel) klass end |
.each(&block) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 17 def self.each(&block) if block @@name2inst.values.each &block else @@name2inst.values end end |
.models ⇒ Object
25 26 27 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 25 def self.models() @@name2inst.values end |
Instance Method Details
#add_child_class(class_model) ⇒ Object
109 110 111 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 109 def add_child_class(class_model) @children << class_model end |
#add_property(prop_description) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 48 def add_property(prop_description) name = prop_description.name if p = @properties[name] if p != prop_description error "Trying to add additional property with smae name '#{name}'" end else @properties[name] = prop_description end end |
#describe(level = 0, max_level = 99) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 113 def describe(level = 0, max_level = 99) if !@properties.empty? || level == 0 prefix = " " * level puts "#{prefix}-------------------------" puts "#{prefix}Class: #{name}" describe_properties(prefix) end @children.each do |ch| ch.describe level + 1, max_level end end |
#describe_properties(prefix) ⇒ Object
125 126 127 128 129 130 131 132 133 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 125 def describe_properties(prefix) # if superklass.kind_of? self.class # superklass.describe_properties # end @properties.each do |n, p| mark = p.kind_of?(ModelDataPropertyDescription) ? '=' : '>' puts "#{prefix} #{mark} #{n}" end end |
#parse(cel) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 60 def parse(cel) cel.children.each do |el| node_name = el.node_name next if node_name == 'comment' case el.node_name when 'subClassOf' parse_super(el) when 'disjointWith' # <owl:disjointWith rdf:resource="#Item"/> when 'label' @label = el.content else warn "Unknown eleement '#{el.node_name}' in '#{self.class.name}'" end end end |
#parse_super(el) ⇒ Object
TODO: Parsing of ‘Restriction’
<rdfs:subClassOf rdf:resource="#NetworkElement"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasSwitchMatrix"/>
<owl:someValuesFrom rdf:resource="#SwitchMatrix"/>
</owl:Restriction>
</rdfs:subClassOf>
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 88 def parse_super(el) res = el.attribute_with_ns('resource', RDF_NS) if res if @superklass warn "Don't really know how to handle multiple inheritence in '#{@name}'" end @superklass = xml_full_name(res.value, el) end end |
#superklass ⇒ Object
99 100 101 102 103 104 105 106 107 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 99 def superklass unless @superklass.kind_of? self.class if klass = self.class[@superklass] @superklass = klass klass.add_child_class(self) end end @superklass end |
#to_s ⇒ Object
139 140 141 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 139 def to_s "#{@name} (#{self.class.name}) - super: #{superklass || 'none'}" end |
#validate ⇒ Object
135 136 137 |
# File 'lib/omf-sfa/model/model_class_description.rb', line 135 def validate() superklass end |