1
<?xml version="1.0" encoding="utf-8"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<title>Redland RDF Language Bindings - Ruby RDoc - Class: Redland::MergedModel</title>
7
<link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
8
<script src="../js/jquery.js" type="text/javascript" charset="utf-8">
10
<script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8">
12
<script src="../js/quicksearch.js" type="text/javascript" charset="utf-8">
14
<script src="../js/darkfish.js" type="text/javascript" charset="utf-8">
17
<body id="top" class="class">
19
<div id="home-metadata">
20
<div id="home-section" class="section">
21
<h3 class="section-header"><a href="../index.html">Home</a> <a href="../index.html#classes">Classes</a> <a href="../index.html#methods">Methods</a></h3>
24
<div id="file-metadata">
25
<div id="file-list-section" class="section">
26
<h3 class="section-header">In Files</h3>
27
<div class="section-body">
29
<li><a href="../rdf/redland/model_rb.html?TB_iframe=true&height=550&width=785" class="thickbox" title="rdf/redland/model.rb">rdf/redland/model.rb</a></li>
34
<div id="class-metadata"><!-- Parent Class -->
35
<div id="parent-class-section" class="section">
36
<h3 class="section-header">Parent</h3>
37
<p class="link"><a href="Model.html">Redland::Model</a></p>
39
<!-- Method Quickref -->
40
<div id="method-list-section" class="section">
41
<h3 class="section-header">Methods</h3>
42
<ul class="link-list">
43
<li><a href="#method-c-new">::new</a></li>
44
<li><a href="#method-i-find_canonical">#find_canonical</a></li>
45
<li><a href="#method-i-find_subject_in_master">#find_subject_in_master</a></li>
46
<li><a href="#method-i-rewrite">#rewrite</a></li>
47
<li><a href="#method-i-smush">#smush</a></li>
51
<div id="project-metadata">
52
<div id="fileindex-section" class="section project-section">
53
<h3 class="section-header">Files</h3>
55
<li class="file"><a href="../Makefile.html">Makefile</a></li>
56
<li class="file"><a href="../rdf/Makefile.html">Makefile</a></li>
57
<li class="file"><a href="../rdf/redland/Makefile.html">Makefile</a></li>
58
<li class="file"><a href="../rdf/redland/schemas/Makefile.html">Makefile</a></li>
61
<div id="classindex-section" class="section project-section">
62
<h3 class="section-header">Class/Module Index <span class="search-toggle"><img src="../images/find.png" height="16" width="16" alt="[+]" title="show/hide quicksearch" /></span></h3>
63
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
64
<fieldset><legend>Quicksearch</legend> <input type="text" name="quicksearch" value="" class="quicksearch-field" /></fieldset>
66
<ul class="link-list">
67
<li><a href="../Redland.html">Redland</a></li>
68
<li><a href="../Redland/BNode.html">Redland::BNode</a></li>
69
<li><a href="../Redland/ContextParser.html">Redland::ContextParser</a></li>
70
<li><a href="../Redland/FileStore.html">Redland::FileStore</a></li>
71
<li><a href="../Redland/HashOpen.html">Redland::HashOpen</a></li>
72
<li><a href="../Redland/HashStore.html">Redland::HashStore</a></li>
73
<li><a href="../Redland/Literal.html">Redland::Literal</a></li>
74
<li><a href="../Redland/MemoryStore.html">Redland::MemoryStore</a></li>
75
<li><a href="../Redland/MergedModel.html">Redland::MergedModel</a></li>
76
<li><a href="../Redland/Model.html">Redland::Model</a></li>
77
<li><a href="../Redland/Namespace.html">Redland::Namespace</a></li>
78
<li><a href="../Redland/Node.html">Redland::Node</a></li>
79
<li><a href="../Redland/NodeIterator.html">Redland::NodeIterator</a></li>
80
<li><a href="../Redland/NodeTypeError.html">Redland::NodeTypeError</a></li>
81
<li><a href="../Redland/OWL.html">Redland::OWL</a></li>
82
<li><a href="../Redland/Parser.html">Redland::Parser</a></li>
83
<li><a href="../Redland/Query.html">Redland::Query</a></li>
84
<li><a href="../Redland/QueryResults.html">Redland::QueryResults</a></li>
85
<li><a href="../Redland/RDFS.html">Redland::RDFS</a></li>
86
<li><a href="../Redland/RedlandError.html">Redland::RedlandError</a></li>
87
<li><a href="../Redland/Resource.html">Redland::Resource</a></li>
88
<li><a href="../Redland/Serializer.html">Redland::Serializer</a></li>
89
<li><a href="../Redland/Statement.html">Redland::Statement</a></li>
90
<li><a href="../Redland/Stream.html">Redland::Stream</a></li>
91
<li><a href="../Redland/TripleStore.html">Redland::TripleStore</a></li>
92
<li><a href="../Redland/Uri.html">Redland::Uri</a></li>
93
<li><a href="../Redland/Util.html">Redland::Util</a></li>
94
<li><a href="../Redland/World.html">Redland::World</a></li>
95
<li><a href="../DC.html">DC</a></li>
96
<li><a href="../FOAF.html">FOAF</a></li>
98
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
102
<div id="documentation">
103
<h1 class="class">Redland::MergedModel</h1>
104
<div id="description" class="description">
105
<p>A non-context-aware model used for the purpose of merging</p>
108
<div id="5Buntitled-5D" class="documentation-section"><!-- Attributes -->
109
<div id="attribute-method-details" class="method-section section">
110
<h3 class="section-header">Attributes</h3>
111
<div id="canonical-attribute-method" class="method-detail"><a name="canonical" id="canonical"></a>
112
<div class="method-heading attribute-method-heading"><span class="method-name">canonical</span><span class="attribute-access-type">[R]</span></div>
113
<div class="method-description"></div>
115
<div id="global_rewrites-attribute-method" class="method-detail"><a name="global_rewrites" id="global_rewrites"></a>
116
<div class="method-heading attribute-method-heading"><span class="method-name">global_rewrites</span><span class="attribute-access-type">[R]</span></div>
117
<div class="method-description"></div>
120
<!-- attribute-method-details -->
122
<div id="public-class-method-details" class="method-section section">
123
<h3 class="section-header">Public Class Methods</h3>
124
<div id="new-method" class="method-detail"><a name="method-c-new" id="method-c-new"></a>
125
<div class="method-heading"><span class="method-name">new</span><span class="method-args">(master_model)</span> <span class="method-click-advice">click to toggle source</span></div>
126
<div class="method-description">
127
<p>Constructor - needs a master model to use</p>
128
<div class="method-source-code" id="new-source">
130
<span class="ruby-comment"># File rdf/redland/model.rb, line 447</span>
131
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">master_model</span>)
132
<span class="ruby-ivar">@hooks</span> = {}
133
<span class="ruby-ivar">@count</span> = {}
134
<span class="ruby-ivar">@inverse_functional_properties</span> = []
135
<span class="ruby-ivar">@identifiers</span> = [] <span class="ruby-comment"># list of inverse functional properties to smush</span>
136
<span class="ruby-ivar">@canonical</span> = {} <span class="ruby-comment">#rewrites to perform on local level</span>
137
<span class="ruby-ivar">@global_rewrites</span> = {} <span class="ruby-comment">#rewrites to apply globally</span>
138
<span class="ruby-ivar">@transactions</span> = []
139
<span class="ruby-ivar">@master</span> = <span class="ruby-identifier">master_model</span>
140
<span class="ruby-ivar">@pred_identifiers</span> = {}
141
<span class="ruby-keyword">super</span>()
143
<span class="ruby-keyword">end</span>
145
<!-- new-source --></div>
147
<!-- new-method --></div>
148
<!-- public-class-method-details -->
149
<div id="public-instance-method-details" class="method-section section">
150
<h3 class="section-header">Public Instance Methods</h3>
151
<div id="find_canonical-method" class="method-detail"><a name="method-i-find_canonical" id="method-i-find_canonical"></a>
152
<div class="method-heading"><span class="method-name">find_canonical</span><span class="method-args">(predlist)</span> <span class="method-click-advice">click to toggle source</span></div>
153
<div class="method-description">
154
<p>Locate predicates for smushing</p>
155
<div class="method-source-code" id="find_canonical-source">
157
<span class="ruby-comment"># File rdf/redland/model.rb, line 475</span>
158
<span class="ruby-keyword">def</span> <span class="ruby-identifier">find_canonical</span>(<span class="ruby-identifier">predlist</span>)
159
<span class="ruby-identifier">predlist</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pred</span><span class="ruby-operator">|</span>
160
<span class="ruby-identifier">identifier</span> = {}
161
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">find</span>(<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">pred</span>,<span class="ruby-keyword">nil</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">subj</span>,<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span><span class="ruby-operator">|</span>
162
<span class="ruby-identifier">master_id</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">find_subject_in_master</span>(<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span>)
163
<span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> <span class="ruby-identifier">master_id</span>
164
<span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>)
165
<span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">subj</span>
166
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">subj</span> <span class="ruby-comment">#already an identifying URI</span>
167
<span class="ruby-identifier">new_value</span> = <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>]
168
<span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> <span class="ruby-ivar">@canonical</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>)
169
<span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">new_value</span>
170
<span class="ruby-keyword">end</span>
171
<span class="ruby-keyword">end</span>
172
<span class="ruby-keyword">else</span> <span class="ruby-comment"># master_id</span>
173
<span class="ruby-keyword">if</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>)
174
<span class="ruby-keyword">if</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">master_id</span>
175
<span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">master_id</span>
176
<span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">master_id</span>
177
<span class="ruby-keyword">end</span>
178
<span class="ruby-keyword">else</span> <span class="ruby-comment"># master_id not in identifier</span>
179
<span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">master_id</span>
180
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@canonical</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>)
181
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">master_id</span>
182
<span class="ruby-ivar">@global_rewrites</span>[<span class="ruby-identifier">master_id</span>] = <span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>]
183
<span class="ruby-keyword">end</span>
184
<span class="ruby-keyword">else</span>
185
<span class="ruby-keyword">if</span> <span class="ruby-identifier">subj</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">master_id</span>
186
<span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">subj</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">master_id</span>
187
<span class="ruby-keyword">end</span>
188
<span class="ruby-keyword">end</span>
189
<span class="ruby-keyword">end</span>
190
<span class="ruby-keyword">end</span>
191
<span class="ruby-keyword">end</span> <span class="ruby-comment"># self.find</span>
192
<span class="ruby-ivar">@pred_identifiers</span>[<span class="ruby-identifier">pred</span>] = <span class="ruby-identifier">identifier</span>
193
<span class="ruby-keyword">end</span> <span class="ruby-comment">#predlist.each</span>
194
<span class="ruby-keyword">end</span>
196
<!-- find_canonical-source --></div>
198
<!-- find_canonical-method -->
199
<div id="find_subject_in_master-method" class="method-detail"><a name="method-i-find_subject_in_master" id="method-i-find_subject_in_master"></a>
200
<div class="method-heading"><span class="method-name">find_subject_in_master</span><span class="method-args">(pred,obj)</span> <span class="method-click-advice">click to toggle source</span></div>
201
<div class="method-description">
202
<p>Return one <a href="Node.html">Node</a> in the <a href="Model.html">Model</a> matching (?,predicate,target) The source and predicate can be a <a href="Node.html">Node</a> or <a href="Uri.html">Uri</a></p>
203
<div class="method-source-code" id="find_subject_in_master-source">
205
<span class="ruby-comment"># File rdf/redland/model.rb, line 463</span>
206
<span class="ruby-keyword">def</span> <span class="ruby-identifier">find_subject_in_master</span>(<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span>)
207
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@master</span>.<span class="ruby-identifier">subject</span>(<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span>)
208
<span class="ruby-keyword">end</span>
210
<!-- find_subject_in_master-source --></div>
212
<!-- find_subject_in_master-method -->
213
<div id="rewrite-method" class="method-detail"><a name="method-i-rewrite" id="method-i-rewrite"></a>
214
<div class="method-heading"><span class="method-name">rewrite</span><span class="method-args">(context=nil)</span> <span class="method-click-advice">click to toggle source</span></div>
215
<div class="method-description">
216
<p>actually do the smush</p>
217
<div class="method-source-code" id="rewrite-source">
219
<span class="ruby-comment"># File rdf/redland/model.rb, line 514</span>
220
<span class="ruby-keyword">def</span> <span class="ruby-identifier">rewrite</span>(<span class="ruby-identifier">context</span>=<span class="ruby-keyword">nil</span>)
221
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">triples</span>() <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sub</span>,<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span><span class="ruby-operator">|</span>
222
<span class="ruby-identifier">sub</span> = <span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">sub</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword">if</span> <span class="ruby-ivar">@canonical</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">sub</span>.<span class="ruby-identifier">to_s</span>)
223
<span class="ruby-identifier">obj</span> = <span class="ruby-ivar">@canonical</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword">if</span> <span class="ruby-ivar">@canonical</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">to_s</span>)
226
<span class="ruby-ivar">@master</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">sub</span>,<span class="ruby-identifier">pred</span>,<span class="ruby-identifier">obj</span>,<span class="ruby-identifier">context</span>)
227
<span class="ruby-keyword">end</span>
228
<span class="ruby-keyword">end</span>
230
<!-- rewrite-source --></div>
232
<!-- rewrite-method -->
233
<div id="smush-method" class="method-detail"><a name="method-i-smush" id="method-i-smush"></a>
234
<div class="method-heading"><span class="method-name">smush</span><span class="method-args">(predlist)</span> <span class="method-click-advice">click to toggle source</span></div>
235
<div class="method-description">
236
<p>Effectively removes the listes Predicates from the <a href="Model.html">Model</a> by replacing all occurrences with a blank node (?? confirm)</p>
237
<div class="method-source-code" id="smush-source">
239
<span class="ruby-comment"># File rdf/redland/model.rb, line 469</span>
240
<span class="ruby-keyword">def</span> <span class="ruby-identifier">smush</span>(<span class="ruby-identifier">predlist</span>)
241
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">find_canonical</span>(<span class="ruby-identifier">predlist</span>)
242
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">rewrite</span>()
243
<span class="ruby-keyword">end</span>
245
<!-- smush-source --></div>
247
<!-- smush-method --></div>
248
<!-- public-instance-method-details --></div>
249
<!-- 5Buntitled-5D --></div>
250
<!-- documentation -->
253
<div class="outerHeader">
254
Go to <a href="/" target="_parent">Redland Home</a> -
255
<a href="/bindings/" target="_parent">Language Bindings Home</a> -
256
<a href="/docs/ruby.html" target="_parent">Ruby API Home</a>
259
<p>(C) Copyright 2004-2013 <a href="http://www.dajobe.org/" target="_parent">Dave Beckett</a>, (C) Copyright 2004-2005 <a href="http://www.bristol.ac.uk/" target="_parent">University of Bristol</a></p>
261
</div> <!-- end outerBlock -->