rtriplify 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,55 +1,221 @@
1
- rTriplify
2
- ========
1
+ =rtriplify
3
2
 
4
- rTriplify is a ruby clone of the triplify-php version. It is used to create
5
- a rdf-mapping of your existing database and serves it out to the (semantic)-web.
3
+ ==What is rtriplify
6
4
 
7
- rTriplify uses the rails database models to generate your rdf-data.
8
- It comes with most of the origin features of triplify.
9
- I will go on detail on this later.
5
+ rtriplify is a ruby clone of the triplify-php version. It is used to create
6
+ an rdf-mapping of your existing database and serves it's content out to the (semantic)-web.
7
+ It offers several opportunities to improve your application with semantic-data in several
8
+ RDF- and output formats. The following RDF-formats are supported:
10
9
 
11
- In addition you have the possibility to generate RDFa -Data and place it inside of
12
- your webpage as a hidden div. Please be aware that this is not the clean way to
13
- serve your content as RDFa. But I think, if you have generated the mapping file
14
- for your database it's just the consequence to place RDFa on your page instead.
15
- RTriplify gives you the right tools to place RDFa tags on your Webpage without having
16
- to do a full code review of your templates. And of course, search engines like google
17
- and yahoo already watch for these tags. Google already rewards RDFa tags with some specials.
18
- For further informations please see here [1] or [2] here
10
+ * RDF/N3
11
+ * RDFa (eperimental feature - please see details)
19
12
 
13
+ You can serve these formats in the following output-formats:
20
14
 
21
- Links:
22
- [1]http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=99170
23
- [2]http://developer.yahoo.com/searchmonkey/ (sadly this project has been rejected)
15
+ * JSON (N3)
16
+ * RDF/N3 file (N3)
17
+ * As hidden div in the view of your application (RDFa)
24
18
 
25
- Example
26
- =======
19
+ ==How to serve data
27
20
 
28
- gem install rtriplify
21
+ You have to do several steps to configure and run a rtriplify instance with your Application.
22
+ For experienced users just do the following steps:
29
23
 
30
- then place a triplify.yml file in the config folder of your RoR-application.
31
- Probably it's the best idea to use the sample config file included in the gem or
32
- you can download a clean sample file here [3] too.
33
24
 
34
- Usaly the sample config has all configuration possibilitys inside of it and
35
- it's well documented. I think you can start now and change the config so that it
36
- will fit to your Application.
25
+ 1. install rtriplify
37
26
 
38
- Now, you want to see your nice RDF-Data?
27
+ 2. add "triplify.yml" file to your app/config folder
39
28
 
40
- just add following route in the route.config:
29
+ 3. configure the mapping to your datamodel
30
+
31
+ 4. add route for rtriplify controller (optional)
32
+
33
+
34
+ For further information, these steps now in detail:
35
+
36
+ === Install rtriplify
37
+
38
+ The easiest way to install rtriplify is by using ruby gem (of course you need a running ruby/rails environment).
39
+ Just open your command-prompt and input:
40
+
41
+ gem install rtriplify
42
+
43
+ Another possibility is to install triplify as rails-plugin. In this case,
44
+ go to the root folder of you application and install it by executing the following command on your commandline:
45
+
46
+ ruby script/plugin install http://github.com/rtriplify/rtriplify.git
47
+
48
+ Of course you can download the source from github and install it manually too.
49
+
50
+ === Add configuration
51
+
52
+ rtriplify just starts up with your application, if you have placed a "triplify.yml" configuration file in the "app/config" folder.
53
+ Please add such a file. You can download a sample configuration file from https://github.com/rtriplify/rtriplify/blob/master/lib/config/triplify_demo.yml.
54
+ This configuration file located at lib/config/triplify_demo.yml folder of your triplify installation directory too.
55
+ (if installed as plugin you can find it at your-app-folder/vendor/plugin/rtriplify/lib/config/triplify_demo.yml)
56
+ Please don't forget to rename it to "triplify.yml".
57
+
58
+ === Edit configuration
59
+
60
+ Usaly the sample configuration has all configuration possibilitys inside of it and
61
+ is well documentated. I think you can start now and change the configuration in a way that it
62
+ will fit to your Application. Please note that this configuration file is using the yaml syntax.
63
+ If your application doesn't start after installing the rtriplify,
64
+ please make sure, you have a well formed yaml configuration file.
65
+
66
+ Please see configuration attributes section for further information
67
+
68
+
69
+ === Serve content
70
+
71
+ Rtriplify allows you to serve content in different ways:
72
+
73
+ 1. As N3-File download with or without subclasses (all referencing objects)
74
+ 2. N3-JSON with oder without subclasses
75
+ 3. As embedded RDFa
76
+
77
+ Just add following route in the route.config:
41
78
 
42
79
  map.connect 'triplify/*specs', :controller => 'triplify', :action => "tripleize"
43
80
 
44
- that's it. Now just go to http://your-app.com/triplify/ and you will get the full
45
- RDF dump of your database. (If you haven't changed the data-depth part in the config)
81
+ Now you can get triples without subclasses under the link:
82
+ /triplify to get all triples
83
+ Depending on your configuration you can call
84
+ /triplify/RDF-Class
85
+ or
86
+ /triplify/RDF-Class/id
87
+ too, to get more specified set of triples.
88
+ Just do a JSON request on this URI to get it as JSON Object.
89
+ That' the same way, php-triplify works.
90
+
91
+ Now, if you want to serve specific triples in your application, e.g. under a product page,
92
+ rtriplify gives you the possibility to use respond_to functionality of Ruby on Rails.
93
+ Just modify your controller function to something similar to the following example:
94
+
95
+ def show
96
+ #load object
97
+ @product = product.find(@params[:id])
98
+
99
+ #new instance of Tripleizer
100
+ t = Tripleizer.new
101
+ respond_to do |format|
102
+ format.html
103
+ # render n3 triples
104
+ format.n3 { render :text => t.rdf("Product",[@product]) }
105
+ end
106
+ end
107
+
108
+ It's important that you give the t.rdf function the correct parameters.
109
+ First parameter is the RDF-Class, second parameter is an array with some instances
110
+ of your models that should be used for rdf generation. Please note, that all
111
+ triples are generated iterative including all triples of RDF-subclasses.
112
+
113
+ If you want to use the RDFa feature of triplify you can generate the triples in a similar way.
114
+ Just store them as a variable and you can display them on your view at the wished position.
115
+
116
+ def show
117
+ #load_object
118
+ @product = product.find(@params[:id])
119
+
120
+ #new instance of Tripleizer
121
+ t = Tripleizer.new
122
+ #get RDFa - text
123
+ @rdfa = t.rdfa("Offer",[@variants,@product_properties])
124
+
125
+ respond_to do |format|
126
+ format.html
127
+ end
128
+ end
129
+
130
+ Please note that this feature is experimental. It's a possibility to embedd RDFa tags as hidden tags on your page without a complete review of your views.
131
+ And of course, search engines like google and yahoo look for these tags. Google already rewards RDFa tags with some special functions.
132
+
133
+ For further informations please see here:
134
+
135
+ http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=99170 or
136
+ http://developer.yahoo.com/searchmonkey/ (sadly this project is discontinued)
137
+
138
+
139
+ === Config attributes
140
+
141
+ Here you will find some description configurating your rtriplify file.
142
+
143
+ namespaces:
144
+ xmlns: http://www.w3.org/1999/xhtml/
145
+ All namespaces for your application. Please use them in your application to
146
+ get the data better linked .
147
+
148
+ queries:
149
+ In general there are two possibilites to configure your rdf Data. First is by
150
+ using sql queries like in the php version of triplify. Please have a look at
151
+ http://triplify.svn.sourceforge.net/viewvc/triplify/triplify-php/config.dist.php?view=markup
152
+ to find out how to configure.
153
+
154
+ Secound possibility and may be the more "rails-way" is to use active record.
155
+ you have two hierarchy levels for configuration. First, the group and secound,
156
+ the Active record model.
157
+ A configuration line in the model has always the Schema
158
+ nameOfField: ar_field
159
+
160
+ ID field has a special meaning. The ID field is always the Subject of the RDF triples.
161
+ If your model has a relation to another Model you can reference the field by using
162
+ the "->" symbol. For example if your Country has States just reference it by
163
+ "state->State: states" before the "->" Symbol. Behind this Symbol, the predicate is written.
164
+
165
+ Additional you can define a filter e.g.
166
+ filter:
167
+ ID: ">213 and id <224"
168
+
169
+ query:
170
+ Type:
171
+ Model:
172
+ attribute_name: field_name
173
+
174
+ In different scenarios, the "attribute_name: field_name" is to simple, you can extend these commands in the following ways:
175
+
176
+ *attribute_name: submodel.field_name
177
+ *attribute_name-> Ref_class: ref_model.reference_id
178
+ *attrubute_name->Ref_class: ref_model*reference_id
179
+ *attrubute_name->Ref_class: MODEL( 'model-class','rdf-resource class')*field_name or, if multiple values
180
+ *attr_name: CONST(gr:Sell,gr:datatype)
181
+ *attr_name: CONST(gr:Sell,LINK)
182
+ *sql_query: sql_query like in triplify ..See here for further information
183
+
184
+ If your RDF/N3 and RDFa model have different schemas, you can add a rdfa_query node. Subnodes follow the same syntax as "query"-nodes.
185
+
186
+ rdfa_query:
187
+
188
+ Objects are classified according to their type. However, you can specify
189
+ a mapping here, if objects of a certain type should be associated with a
190
+ different class (e.g. classify all users as 'foaf:person'). If you are
191
+ unsure it is safe to leave this configuration array empty.
192
+
193
+ objectProperties:
194
+ field_name: type
195
+
196
+ Mapping a class to a specified type
197
+
198
+ classMap:
199
+ class: gr:Offering
200
+
201
+ The licence under which you publish your data
202
+ license: http://creativecommons.org/licenses/by/3.0/us/
203
+
204
+ Additional metadata
205
+ You can add arbitrary metadata. The keys of the following array are
206
+ properties, the values will be represented as respective property values.
207
+
208
+ metadata:
209
+ dc:title: test
210
+ dc:publisher: test
46
211
 
47
- That's all the magic.
48
- For detailed documentation I'll go on detail on some of the config sections.
212
+
213
+ Specify on which URI level to expose the data - possible values are:
49
214
 
215
+ * Use 0 or ommit to expose all available content on the highest level all content will be exposed when /triplify/ is accessed on your server. This configuration is recommended for small to medium websites.
50
216
 
217
+ * Use 1 to publish only links to the classes on the highest level and all content will be exposed when for example /triplify/user/ is accessed.
51
218
 
219
+ * Use 2 to publish only links on highest and classes level and all content will be exposed on the instance level, e.g. when /triplify/user/1/ is accessed.
52
220
 
53
- Links:
54
- [3] sample config
55
- Copyright (c) 2010 Nico Patitz, released under the MIT license
221
+ LinkedDataDepth: 2
@@ -1,5 +1,5 @@
1
1
  require 'configatron'
2
-
2
+ #
3
3
  class TriplifyController < ActionController::Base
4
4
 
5
5
  def tripleize
@@ -61,11 +61,13 @@ class TriplifyController < ActionController::Base
61
61
  #get all models
62
62
  def model t, model_group
63
63
  models = t.find_models model_group
64
- models.values[0].each do |model_name, model_attributes|
65
- if model_name.to_s =="sql_query"
66
- t.write_sql(model_group_name,model_attributes,output)
67
- else
68
- t.write_model(model_name, models.keys[0])
64
+ if models
65
+ models.values[0].each do |model_name, model_attributes|
66
+ if model_name.to_s =="sql_query"
67
+ t.write_sql(models.keys[0],model_attributes,output)
68
+ else
69
+ t.write_model(model_name, models.keys[0])
70
+ end
69
71
  end
70
72
  end
71
73
  end
@@ -74,22 +76,23 @@ class TriplifyController < ActionController::Base
74
76
  def index t,param
75
77
  subclass,id = param
76
78
  models = t.find_models subclass
77
- models.values[0].each do |model_name, model_attributes|
78
- if model_name.to_s =="sql_query"
79
- #some magic is needed here ..parse the sql query?
80
- else
81
- m = Model.new model_name, models.keys[0].to_s
82
- row_values=m.get_row_by_id(id).first
83
- c1=Hash.new
84
- if row_values
85
- m.model.columns_hash.each_with_index do |column_name,i|
86
- c1[column_name[0]]=eval("row_values.#{column_name}")
79
+ if models
80
+ models.values[0].each do |model_name, model_attributes|
81
+ if model_name.to_s =="sql_query"
82
+ #some magic is needed here ..parse the sql query?
83
+ else
84
+ m = Model.new model_name, models.keys[0].to_s
85
+ row_values=m.get_row_by_id(id).first
86
+ c1=Hash.new
87
+ if row_values
88
+ m.model.columns_hash.each_with_index do |column_name,i|
89
+ c1[column_name[0]]=eval("row_values.#{column_name}")
90
+ end
91
+ t.extract_id_line model_attributes, c1,row_values,m.get_datatypes
92
+ t.make_triples(c1, models.keys[0].to_s , "", m.get_datatypes)
87
93
  end
88
- t.extract_id_line model_attributes, c1,row_values,m.get_datatypes
89
- t.make_triples(c1, models.keys[0].to_s , "", m.get_datatypes)
90
94
  end
91
95
  end
92
-
93
96
  end
94
97
  #render :text => t.make_triples(c1, controller , "", t.dbd_types)
95
98
 
@@ -1,16 +1,19 @@
1
1
  require 'configatron'
2
2
 
3
3
  if File.exists?('config/triplify.yml')
4
- #loading helpers and controllers
5
-
4
+ #loading all plugin files
6
5
  %w{ models controllers helpers}.each do |dir|
7
6
  path = File.join(File.dirname(__FILE__), 'app', dir)
8
7
  $LOAD_PATH << path
9
8
  ActiveSupport::Dependencies.load_paths << path
10
9
  ActiveSupport::Dependencies.load_once_paths.delete(path)
11
10
  end
12
- # load settings
13
- configatron.configure_from_yaml('config/triplify.yml')
11
+ # load settings from conig
12
+ configatron.configure_from_yaml('config/triplify.yml')
13
+ #register Mime-type
14
+ Mime::Type.register "text/n3", :n3
14
15
  end
15
16
 
16
17
 
18
+
19
+
@@ -1,14 +1,24 @@
1
1
  require 'configatron'
2
2
  require 'json'
3
3
 
4
+ # This is the core class of triplify
5
+ # Use instance of this class to get your defined RDF data
6
+
7
+
8
+ # Author:: Nico Patitz (mailto:nico.patitz@gmx.de)
9
+ # Copyright:: Copyright (c) 2010 Nico Patitz
10
+ # License:: Distributes under the same terms as triplify
11
+
12
+
4
13
  class Tripleizer
5
- # constructor
14
+ # build new instance
15
+ # define you can define output param
6
16
  def initialize output=nil
7
17
  @object_properties = configatron.objectProperties.to_hash
8
18
  @object_namespaces = configatron.namespaces.to_hash
9
19
  @class_map = configatron.classMap.to_hash
10
20
  @output=output
11
- @version="0.0.1"
21
+ @version="0.0.2"
12
22
  @json_hash = Hash.new
13
23
  @output_json = nil;
14
24
  @base_uri = "http://example.com/"
@@ -16,9 +26,9 @@ class Tripleizer
16
26
 
17
27
  # stores RDF output as string
18
28
  attr_accessor :output
19
- # rtriplify version in RDF
29
+ # rtriplify-version showed in RDF
20
30
  attr_reader :version
21
- # get a json object of the RDF
31
+ # the RDF data as a json object
22
32
  attr_accessor :output_json
23
33
  # base uri..if not set, std. from config is used
24
34
  attr_accessor :base_uri
@@ -32,21 +42,22 @@ class Tripleizer
32
42
  rdf_string =""
33
43
  #get configuration start ->classes
34
44
  m = find_models(rdf_start_class)
35
-
36
- m.values[0].each do |mod,attributes|
37
- unless mod.eql?("sql_query")
38
- t_mod = Model.new(mod, rdf_start_class, class_map[mod.to_s])
39
- #if sql...
40
- key = t_mod.get_key
41
- t_mod.get_rows.each do |item|
42
- rdf_string<<rdf_by_id(mod,rdf_start_class,eval("item.#{key}"))
45
+ if m
46
+ m.values[0].each do |mod,attributes|
47
+ unless mod.eql?("sql_query")
48
+ t_mod = Model.new(mod, rdf_start_class, class_map[mod.to_s])
49
+ #if sql...
50
+ key = t_mod.get_key
51
+ t_mod.get_rows.each do |item|
52
+ rdf_string<<rdf_by_id(mod,rdf_start_class,eval("item.#{key}"))
53
+ end
43
54
  end
44
55
  end
45
56
  end
46
57
  rdf_string
47
58
  end
48
59
 
49
- # get a RDFa note by its ID and resource-class.
60
+ # get a RDF node by its ID and resource-class.
50
61
  # Iterative Function, so be carefull with your config not to produce endless loops
51
62
  def rdf_by_id model_name, class_name, id
52
63
  puts model_name
@@ -142,15 +153,16 @@ class Tripleizer
142
153
  end
143
154
 
144
155
  #get configuration start ->classes
145
- m = find_models(rdf_start_class)
146
-
147
- m.values[0].each do |mod,attributes|
148
- unless mod.eql?("sql_query")
149
- t_mod = Model.new(mod, rdf_start_class, class_map[mod.to_s])
150
- #if sql...
151
- key = t_mod.get_key
152
- t_mod.get_rows.each do |item|
153
- rdfa_string<<find_rdfa_by_id(rdf_start_class,eval("item.#{key}"))
156
+ m = find_models(rdf_start_class,true)
157
+ if m
158
+ m.values[0].each do |mod,attributes|
159
+ unless mod.eql?("sql_query")
160
+ t_mod = Model.new(mod, rdf_start_class, class_map[mod.to_s])
161
+ #if sql...
162
+ key = t_mod.get_key
163
+ t_mod.get_rows.each do |item|
164
+ rdfa_string<<find_rdfa_by_id(rdf_start_class,eval("item.#{key}"))
165
+ end
154
166
  end
155
167
  end
156
168
  end
@@ -163,76 +175,78 @@ class Tripleizer
163
175
  id = id.to_s
164
176
  rdfa_string = "<div about=\"#{rdf_start_class+"/"<<id}\" typeof=\"#{@class_map[rdf_start_class.to_sym]}\">\n"
165
177
  #get configuration start ->classes
166
- m = find_models(rdf_start_class)
167
- m.values[0].each do |mod,attributes|
168
- unless mod.to_s.eql?("sql_query")
169
- t_mod = Model.new(mod, rdf_start_class)
170
- #if sql...
171
- item=t_mod.get_row_by_id(id).first
172
- t_mod.model_attributes.each do |name,link_field|
173
- #property
174
- #link to other ress
175
- if name.to_s.include? "->"
176
- m_class,role_mod = name.to_s.split "->"
177
-
178
- if role_mod.eql?("sql_query")
179
- hello=""
180
- else
181
- if link_field.include?("*")
182
- field_class,field= link_field.to_s.split("*")
183
- if field_class.to_s[0..5]=="Model("
184
- field_class.gsub!("MODEL(","Model.new(")
185
- submodel= eval(field_class.to_s).get_rows
186
- rdfa_string<<"<div rel=\"#{m_class}\">\n"
187
- submodel.each do |line|
188
- rdfa_string<<find_rdfa_by_id(role_mod , eval("line.#{field.to_s}"))
178
+ m = find_models(rdf_start_class,true)
179
+ if m
180
+ m.values[0].each do |mod,attributes|
181
+ unless mod.to_s.eql?("sql_query")
182
+ t_mod = Model.new(mod, rdf_start_class)
183
+ #if sql...
184
+ item=t_mod.get_row_by_id(id).first
185
+ t_mod.model_attributes.each do |name,link_field|
186
+ #property
187
+ #link to other ress
188
+ if name.to_s.include? "->"
189
+ m_class,role_mod = name.to_s.split "->"
190
+
191
+ if role_mod.eql?("sql_query")
192
+ hello=""
193
+ else
194
+ if link_field.include?("*")
195
+ field_class,field= link_field.to_s.split("*")
196
+ if field_class.to_s[0..5]=="MODEL("
197
+ field_class.gsub!("MODEL(","Model.new(")
198
+ submodel= eval(field_class.to_s).get_rows
199
+ rdfa_string<<"<div rel=\"#{m_class}\">\n"
200
+ submodel.each do |line|
201
+ rdfa_string<<find_rdfa_by_id(role_mod , eval("line.#{field.to_s}"))
202
+ end
203
+ rdfa_string<<"</div>\n"
204
+ else
205
+ subitem = eval("item.#{field_class}")
206
+ rdfa_string<<"<div rel=\"#{m_class}\">\n"
207
+ subitem.each do |subline|
208
+ rdfa_string<< find_rdfa_by_id(role_mod , eval("subline.#{field.to_s}"))
209
+ end
210
+ rdfa_string<<"</div>\n"
189
211
  end
190
- rdfa_string<<"</div>\n"
191
212
  else
192
- subitem = eval("item.#{field_class}")
193
213
  rdfa_string<<"<div rel=\"#{m_class}\">\n"
194
- subitem.each do |subline|
195
- rdfa_string<< find_rdfa_by_id(role_mod , eval("subline.#{field.to_s}"))
196
- end
214
+ rdfa_string << find_rdfa_by_id(role_mod , eval("item.#{link_field.to_s}"))
197
215
  rdfa_string<<"</div>\n"
198
216
  end
199
- else
200
- rdfa_string<<"<div rel=\"#{m_class}\">\n"
201
- rdfa_string << find_rdfa_by_id(role_mod , eval("item.#{link_field.to_s}"))
202
- rdfa_string<<"</div>\n"
203
- end
204
- end
205
- else
206
- write=true
207
- #just a property
208
- #CONST(
209
- #Model(
210
- if link_field.to_s[0..5] =="CONST("
211
- write=false
212
- val,data_type= t_mod.get_const(link_field)
213
- if data_type=="LINK"
214
- #link
215
- rdfa_string<<"<div rel= \"#{name}\" resource=\"#{val}\"> </div>\n"
216
- else
217
- #value
218
- rdfa_string<<"<div property= \"#{name}\" content=\"#{val}\" datatype=\"#{data_type}\"> </div>\n"
219
217
  end
220
218
  else
221
- m_class,field= link_field.to_s.split("*")
222
- if name.to_s[0..5]=="MODEL("
223
- m_class.gsub!("MODEL(","Model.new(")
224
- submodel= eval(m_class.to_s).get_rows
225
- submodel.each do |line|
226
- datatype="string"
227
- rdfa_string<<"<div property= \"#{ref_pred}\" content=\"#{eval("line.#{field.to_s.downcase}")}\" datatype=\"#{data_type}\"> </div>\n"
219
+ write=true
220
+ #just a property
221
+ #CONST(
222
+ #Model(
223
+ if link_field.to_s[0..5] =="CONST("
224
+ write=false
225
+ val,data_type= t_mod.get_const(link_field)
226
+ if data_type=="LINK"
227
+ #link
228
+ rdfa_string<<"<div rel= \"#{name}\" resource=\"#{val}\"> </div>\n"
229
+ else
230
+ #value
231
+ rdfa_string<<"<div property= \"#{name}\" content=\"#{val}\" datatype=\"#{data_type}\"> </div>\n"
232
+ end
233
+ else
234
+ m_class,field= link_field.to_s.split("*")
235
+ if name.to_s[0..5]=="MODEL("
236
+ m_class.gsub!("MODEL(","Model.new(")
237
+ submodel= eval(m_class.to_s).get_rows
238
+ submodel.each do |line|
239
+ datatype="string"
240
+ rdfa_string<<"<div property= \"#{ref_pred}\" content=\"#{eval("line.#{field.to_s.downcase}")}\" datatype=\"#{data_type}\"> </div>\n"
241
+ end
242
+ end
243
+ if field
244
+ write = false
245
+ #rdfa_string<<find_rdfa_by_id("","")
228
246
  end
229
247
  end
230
- if field
231
- write = false
232
- #rdfa_string<<find_rdfa_by_id("","")
233
- end
248
+ rdfa_string<<"<div property= \"#{name}\" content=\"#{eval("item.#{link_field}")}\"></div>\n" if write
234
249
  end
235
- rdfa_string<<"<div property= \"#{name}\" content=\"#{eval("item.#{link_field}")}\"></div>\n" if write
236
250
  end
237
251
  end
238
252
  end
@@ -246,8 +260,13 @@ class Tripleizer
246
260
 
247
261
  # Find all the models to the given key ( the RDF-Class name)
248
262
  # returns a hash with the RDF-Class name as key and the models as value
249
- def find_models key
250
- model_groups = eval("configatron.query").to_hash
263
+ # rdfa -> if true, watch for a RDFa section
264
+ def find_models key, rdfa=nil
265
+ if rdfa
266
+ model_groups = eval("configatron.rdfa_query") ? eval("configatron.rdfa_query").to_hash : eval("configatron.query").to_hash
267
+ else
268
+ model_groups = eval("configatron.query").to_hash
269
+ end
251
270
  model_groups.each do |model_group_name,model_group|
252
271
  if model_group_name.to_s.downcase == key.downcase
253
272
  return {model_group_name=>model_group}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nico Patitz
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2007-09-03 00:00:00 +02:00
17
+ date: 2010-12-05 21:24:22.797000 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency