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 Application Framework - Ruby RDoc - Class: Redland::Parser</title>
7
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
8
<script type="text/javascript">
11
function popupCode( url ) {
12
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
15
function toggleCode( id ) {
16
if ( document.getElementById )
17
elem = document.getElementById( id );
18
else if ( document.all )
19
elem = eval( "document.all." + id );
23
elemStyle = elem.style;
25
if ( elemStyle.display != "block" ) {
26
elemStyle.display = "block"
28
elemStyle.display = "none"
34
// Make codeblocks hidden by default
35
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
41
<div class="outerBlock">
43
<div class="outerHeader">
44
Go to <a href="/" target="_parent">Redland Home</a> -
45
<a href="/bindings/" target="_parent">Language Bindings Home</a> -
46
<a href="/docs/ruby.html" target="_parent">Ruby API Home</a>
49
<div id="classHeader">
50
<table class="header-table">
51
<tr class="top-aligned-row">
52
<td><strong>Class</strong></td>
53
<td class="class-name-in-header">Redland::Parser</td>
55
<tr class="top-aligned-row">
56
<td><strong>In:</strong></td>
57
<td><a href="../../files/rdf/redland/parser_rb.html">rdf/redland/parser.rb</a><br /></td>
59
<tr class="top-aligned-row">
60
<td><strong>Parent:</strong></td>
65
<!-- banner header -->
66
<div id="bodyContent">
67
<div id="contextContent">
68
<div id="description">
69
<p>The <a href="Parser.html">Parser</a> class for rdf. There are currently three types of parsers *’rdfxml’- a rdf parser *’<a href="Parser.html#M000021">ntriples</a>’ a An triples parser *’<a href="Parser.html#M000022">turtle</a>’ - a parser for the <a href="Parser.html#M000022">turtle</a> syntax as defined in</p>
71
http://www.dajobe.org/2004/01/turtle/
73
<p>*’rss-tag-soup’ - a parser for all RSS flavours and some atom *’grddl’ - GRDDL</p>
74
<p>The last two may or may not be available depending on systems.</p>
77
parser = Parser.ntriples()
78
parser.parse_into_model(model,'file:./ical.rdf')
81
<div id="method-list">
82
<h3 class="section-bar">Methods</h3>
83
<div class="name-list"><a href="#M000030">add_ident</a> <a href="#M000020">create_finalizer</a> <a href="#M000028">feature</a> <a href="#M000019">new</a> <a href="#M000021">ntriples</a> <a href="#M000024">parse_as_stream</a> <a href="#M000025">parse_into_model</a> <a href="#M000026">parse_string_as_stream</a> <a href="#M000027">parse_string_into_model</a> <a href="#M000023">raptor</a> <a href="#M000029">setFeature</a> <a href="#M000032">smush_file</a> <a href="#M000031">smush_string</a> <a href="#M000022">turtle</a> </div>
88
<div id="attribute-list">
89
<h3 class="section-bar">Attributes</h3>
90
<div class="name-list">
92
<tr class="top-aligned-row context-row">
93
<td class="context-item-name">context</td>
94
<td class="context-item-value"> [RW] </td>
95
<td class="context-item-desc"></td>
100
<!-- if method_list -->
102
<h3 class="section-bar">Public Class methods</h3>
103
<div id="method-M000020" class="method-detail"><a name="M000020" id="M000020"></a>
104
<div class="method-heading"><a href="#M000020" class="method-signature"><span class="method-name">create_finalizer</span><span class="method-args">(parser)</span></a></div>
105
<div class="method-description">
106
<p><a class="source-toggle" href="#" onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
107
<div class="method-source-code" id="M000020-source">
109
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 34</span>
110
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">create_finalizer</span>(<span class="ruby-identifier">parser</span>)
111
<span class="ruby-identifier">proc</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span> <span class="ruby-node">"Finalizer on #{id}"</span>
112
<span class="ruby-comment cmt">#$log_final.info "closing parser"</span>
113
<span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_free_parser</span>(<span class="ruby-identifier">parser</span>)
115
<span class="ruby-keyword kw">end</span>
119
<div id="method-M000019" class="method-detail"><a name="M000019" id="M000019"></a>
120
<div class="method-heading"><a href="#M000019" class="method-signature"><span class="method-name">new</span><span class="method-args">(name='rdfxml',mime_type="application/rdf+xml",uri=nil,context=nil)</span></a></div>
121
<div class="method-description">
122
<p>create a <a href="Parser.html#M000019">new</a> <a href="Parser.html">Parser</a>. if no name is given, it defaults to parsing RDF/XML syntax</p>
123
<p><a class="source-toggle" href="#" onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
124
<div class="method-source-code" id="M000019-source">
126
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 25</span>
127
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>=<span class="ruby-value str">'rdfxml'</span>,<span class="ruby-identifier">mime_type</span>=<span class="ruby-value str">"application/rdf+xml"</span>,<span class="ruby-identifier">uri</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">context</span>=<span class="ruby-keyword kw">nil</span>)
128
<span class="ruby-ivar">@context</span> = <span class="ruby-keyword kw">nil</span>
129
<span class="ruby-ivar">@idents</span> = []
130
<span class="ruby-identifier">uri</span>=<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>
131
<span class="ruby-ivar">@parser</span> = <span class="ruby-constant">Redland</span>.<span class="ruby-identifier">librdf_new_parser</span>(<span class="ruby-identifier">$world</span>.<span class="ruby-identifier">world</span>,<span class="ruby-identifier">name</span>,<span class="ruby-identifier">mime_type</span>,<span class="ruby-identifier">uri</span>)
132
<span class="ruby-identifier">raise</span> <span class="ruby-constant">RedlandError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">"Parser construction failed"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parser</span>
133
<span class="ruby-constant">ObjectSpace</span>.<span class="ruby-identifier">define_finalizer</span>(<span class="ruby-keyword kw">self</span>,<span class="ruby-constant">Parser</span>.<span class="ruby-identifier">create_finalizer</span>(<span class="ruby-ivar">@parser</span>))
134
<span class="ruby-keyword kw">end</span>
138
<div id="method-M000021" class="method-detail"><a name="M000021" id="M000021"></a>
139
<div class="method-heading"><a href="#M000021" class="method-signature"><span class="method-name">ntriples</span><span class="method-args">(uri=nil)</span></a></div>
140
<div class="method-description">
141
<p>create a parser for the <a href="Parser.html#M000021">ntriples</a> syntax</p>
142
<p><a class="source-toggle" href="#" onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
143
<div class="method-source-code" id="M000021-source">
145
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 42</span>
146
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">ntriples</span>(<span class="ruby-identifier">uri</span>=<span class="ruby-keyword kw">nil</span>)
147
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'ntriples'</span>,<span class="ruby-value str">""</span>,<span class="ruby-identifier">uri</span>)
148
<span class="ruby-keyword kw">end</span>
152
<div id="method-M000023" class="method-detail"><a name="M000023" id="M000023"></a>
153
<div class="method-heading"><a href="#M000023" class="method-signature"><span class="method-name">raptor</span><span class="method-args">(uri=nil)</span></a></div>
154
<div class="method-description">
155
<p>create a parser for rdf syntax</p>
156
<p><a class="source-toggle" href="#" onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
157
<div class="method-source-code" id="M000023-source">
159
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 52</span>
160
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">raptor</span>(<span class="ruby-identifier">uri</span>=<span class="ruby-keyword kw">nil</span>)
161
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'rdfxml'</span>,<span class="ruby-value str">'application/rdf+xml'</span>,<span class="ruby-identifier">uri</span>)
162
<span class="ruby-keyword kw">end</span>
166
<div id="method-M000022" class="method-detail"><a name="M000022" id="M000022"></a>
167
<div class="method-heading"><a href="#M000022" class="method-signature"><span class="method-name">turtle</span><span class="method-args">(uri=nil)</span></a></div>
168
<div class="method-description">
169
<p>create a parser for the <a href="Parser.html#M000022">turtle</a> syntax</p>
170
<p><a class="source-toggle" href="#" onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
171
<div class="method-source-code" id="M000022-source">
173
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 47</span>
174
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">turtle</span>(<span class="ruby-identifier">uri</span>=<span class="ruby-keyword kw">nil</span>)
175
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'turtle'</span>,<span class="ruby-value str">""</span>,<span class="ruby-identifier">uri</span>)
176
<span class="ruby-keyword kw">end</span>
180
<h3 class="section-bar">Public Instance methods</h3>
181
<div id="method-M000030" class="method-detail"><a name="M000030" id="M000030"></a>
182
<div class="method-heading"><a href="#M000030" class="method-signature"><span class="method-name">add_ident</span><span class="method-args">(node)</span></a></div>
183
<div class="method-description">
184
<p><a class="source-toggle" href="#" onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
185
<div class="method-source-code" id="M000030-source">
187
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 165</span>
188
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_ident</span>(<span class="ruby-identifier">node</span>)
189
<span class="ruby-ivar">@idents</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
190
<span class="ruby-keyword kw">end</span>
194
<div id="method-M000028" class="method-detail"><a name="M000028" id="M000028"></a>
195
<div class="method-heading"><a href="#M000028" class="method-signature"><span class="method-name">feature</span><span class="method-args">(uri)</span></a></div>
196
<div class="method-description">
197
<p>Get a parser <a href="Parser.html#M000028">feature</a>. The <a href="Parser.html#M000028">feature</a> is a <a href="Uri.html">Uri</a></p>
198
<p><a class="source-toggle" href="#" onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
199
<div class="method-source-code" id="M000028-source">
201
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 147</span>
202
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">feature</span>(<span class="ruby-identifier">uri</span>)
203
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword kw">end</span>
204
<span class="ruby-identifier">value</span> = <span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_get_feature</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span>)
205
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"NULL"</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
206
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
207
<span class="ruby-keyword kw">else</span>
208
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Node</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:from_object=</span><span class="ruby-operator">></span><span class="ruby-identifier">value</span>)
209
<span class="ruby-keyword kw">end</span>
210
<span class="ruby-keyword kw">end</span>
214
<div id="method-M000024" class="method-detail"><a name="M000024" id="M000024"></a>
215
<div class="method-heading"><a href="#M000024" class="method-signature"><span class="method-name">parse_as_stream</span><span class="method-args">(uri,base_uri=nil) {|stream.current| ...}</span></a></div>
216
<div class="method-description">
217
<p>Parse the given uri with optional base_uri and return a <a href="Stream.html">Stream</a>. If block_given, yield the <a href="Statement.html">Statement</a> instead Returns nil on failure.</p>
218
<p><a class="source-toggle" href="#" onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
219
<div class="method-source-code" id="M000024-source">
221
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 59</span>
222
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_as_stream</span>(<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>=<span class="ruby-keyword kw">nil</span>)
223
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword kw">end</span>
224
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">base_uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">base_uri</span>) <span class="ruby-keyword kw">end</span>
225
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">base_uri</span>
226
<span class="ruby-identifier">my_stream</span> = <span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_parse_as_stream</span> <span class="ruby-ivar">@parser</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span>, <span class="ruby-keyword kw">nil</span>
227
<span class="ruby-keyword kw">else</span>
228
<span class="ruby-identifier">my_stream</span> = <span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_parse_as_stream</span> <span class="ruby-ivar">@parser</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span> ,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>
229
<span class="ruby-keyword kw">end</span>
230
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">my_stream</span>
231
<span class="ruby-identifier">stream</span> = <span class="ruby-constant">Stream</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">my_stream</span>,<span class="ruby-keyword kw">self</span>)
232
<span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">block_given?</span>
233
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stream</span>
234
<span class="ruby-keyword kw">else</span>
235
<span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">stream</span>.<span class="ruby-identifier">end?</span>
236
<span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">stream</span>.<span class="ruby-identifier">current</span>
237
<span class="ruby-identifier">stream</span>.<span class="ruby-identifier">next</span>
238
<span class="ruby-keyword kw">end</span>
239
<span class="ruby-keyword kw">end</span>
240
<span class="ruby-keyword kw">end</span>
244
<div id="method-M000025" class="method-detail"><a name="M000025" id="M000025"></a>
245
<div class="method-heading"><a href="#M000025" class="method-signature"><span class="method-name">parse_into_model</span><span class="method-args">(model,uri,base_uri=nil,context=@context)</span></a></div>
246
<div class="method-description">
247
<p>Parse the syntax at the uri <a href="Uri.html">Uri</a> with optional base <a href="Uri.html">Uri</a> base_uri into <a href="Model.html">Model</a> model. If the base_uri is given then the content is parsed as if it was at the base_uri rather than the uri. If the optional context is given, the statement is added to the context</p>
248
<p>NOTE: The order of the arguments to this method is different from the C API and other language bindings.</p>
249
<p><a class="source-toggle" href="#" onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
250
<div class="method-source-code" id="M000025-source">
252
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 85</span>
253
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_into_model</span>(<span class="ruby-identifier">model</span>,<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">context</span>=<span class="ruby-ivar">@context</span>)
254
<span class="ruby-comment cmt">#puts "parse_into_model context is #{context}"</span>
255
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
256
<span class="ruby-identifier">uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>)
257
<span class="ruby-keyword kw">end</span>
258
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base_uri</span>
259
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
260
<span class="ruby-identifier">base_uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">base_uri</span>)
261
<span class="ruby-keyword kw">end</span>
262
<span class="ruby-keyword kw">else</span>
263
<span class="ruby-identifier">base_uri</span>=<span class="ruby-identifier">uri</span>
264
<span class="ruby-keyword kw">end</span>
265
<span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">context</span>
266
<span class="ruby-keyword kw">begin</span>
267
<span class="ruby-identifier">r</span> = <span class="ruby-constant">Redland</span>.<span class="ruby-identifier">librdf_parser_parse_into_model</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">model</span>.<span class="ruby-identifier">model</span>)
268
<span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">RedlandError</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">err</span>
269
<span class="ruby-identifier">print</span> <span class="ruby-value str">"caught error"</span><span class="ruby-operator">+</span> <span class="ruby-identifier">err</span>
270
<span class="ruby-keyword kw">end</span>
271
<span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt">#context</span>
272
<span class="ruby-identifier">raise</span> <span class="ruby-constant">RedlandError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"Cannot make a Node from an object of #{context.class}"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">context</span>
273
<span class="ruby-identifier">context</span> = <span class="ruby-constant">Node</span>.<span class="ruby-identifier">ensure</span>(<span class="ruby-identifier">context</span>)
274
<span class="ruby-identifier">my_stream</span> = <span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_parse_as_stream</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>)
275
<span class="ruby-constant">Redland</span>.<span class="ruby-identifier">librdf_model_context_add_statements</span>(<span class="ruby-identifier">model</span>.<span class="ruby-identifier">model</span>,<span class="ruby-identifier">context</span>,<span class="ruby-identifier">my_stream</span>)
276
<span class="ruby-comment cmt">#self.parse_as_stream(uri,base_uri){|s| model.add_statement(s,context)}</span>
277
<span class="ruby-keyword kw">end</span>
279
<span class="ruby-keyword kw">end</span>
283
<div id="method-M000026" class="method-detail"><a name="M000026" id="M000026"></a>
284
<div class="method-heading"><a href="#M000026" class="method-signature"><span class="method-name">parse_string_as_stream</span><span class="method-args">(string,base_uri) {|stream.current| ...}</span></a></div>
285
<div class="method-description">
286
<p>Parse the syntax in string with required base <a href="Uri.html">Uri</a> base_uri</p>
287
<p>Returns a <a href="Stream.html">Stream</a> or yields <a href="Statement.html">Statement</a> if block given. Returns nil on failure.</p>
288
<p><a class="source-toggle" href="#" onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
289
<div class="method-source-code" id="M000026-source">
291
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 118</span>
292
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_string_as_stream</span>(<span class="ruby-identifier">string</span>,<span class="ruby-identifier">base_uri</span>)
293
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">base_uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">base_uri</span>) <span class="ruby-keyword kw">end</span>
294
<span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">base_uri</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">RedlandError</span>(<span class="ruby-value str">"A base URI is required when parsing a string"</span>) <span class="ruby-keyword kw">end</span>
295
<span class="ruby-identifier">my_stream</span> = <span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_parse_string_as_stream</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">string</span>,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>)
296
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">my_stream</span>
297
<span class="ruby-identifier">stream</span> = <span class="ruby-constant">Stream</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">my_stream</span>,<span class="ruby-keyword kw">self</span>)
298
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">stream</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">block_given?</span>
299
<span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">stream</span>.<span class="ruby-identifier">end?</span>
300
<span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">stream</span>.<span class="ruby-identifier">current</span>
301
<span class="ruby-identifier">stream</span>.<span class="ruby-identifier">next</span>
302
<span class="ruby-keyword kw">end</span>
303
<span class="ruby-keyword kw">end</span>
307
<div id="method-M000027" class="method-detail"><a name="M000027" id="M000027"></a>
308
<div class="method-heading"><a href="#M000027" class="method-signature"><span class="method-name">parse_string_into_model</span><span class="method-args">(model,string,base_uri=nil,context=@context)</span></a></div>
309
<div class="method-description">
310
<p>Parse the syntax in String string with required <a href="Uri.html">Uri</a> base_uri into <a href="Model.html">Model</a> model. if context is given then the context information is stored as well</p>
311
<p>NOTE: The order of the arguments to this method is different from the C API and other language bindings.</p>
312
<p><a class="source-toggle" href="#" onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
313
<div class="method-source-code" id="M000027-source">
315
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 136</span>
316
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_string_into_model</span>(<span class="ruby-identifier">model</span>,<span class="ruby-identifier">string</span>,<span class="ruby-identifier">base_uri</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">context</span>=<span class="ruby-ivar">@context</span>)
317
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">base_uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">base_uri</span>)<span class="ruby-keyword kw">end</span>
318
<span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">base_uri</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">RedlandError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">"A base URI is required when parsing a string"</span>) <span class="ruby-keyword kw">end</span>
319
<span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">context</span>
320
<span class="ruby-keyword kw">return</span> (<span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_parse_string_into_model</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">string</span>,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">model</span>.<span class="ruby-identifier">model</span>)<span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
321
<span class="ruby-keyword kw">else</span>
322
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse_string_as_stream</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">string</span>,<span class="ruby-identifier">base_uri</span>.<span class="ruby-identifier">uri</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">model</span>.<span class="ruby-identifier">add_statement</span>(<span class="ruby-identifier">s</span>,<span class="ruby-identifier">context</span>)}
323
<span class="ruby-keyword kw">end</span>
324
<span class="ruby-keyword kw">end</span>
328
<div id="method-M000029" class="method-detail"><a name="M000029" id="M000029"></a>
329
<div class="method-heading"><a href="#M000029" class="method-signature"><span class="method-name">setFeature</span><span class="method-args">(uri,value)</span></a></div>
330
<div class="method-description">
331
<p>Set a parser <a href="Parser.html#M000028">feature</a>. The <a href="Parser.html#M000028">feature</a> is named <a href="Uri.html">Uri</a> uri and the value is a <a href="Node.html">Node</a>.</p>
332
<p><a class="source-toggle" href="#" onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
333
<div class="method-source-code" id="M000029-source">
335
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 159</span>
336
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setFeature</span>(<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">value</span>)
337
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">uri</span> = <span class="ruby-constant">Uri</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>) <span class="ruby-keyword kw">end</span>
338
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">value</span> = <span class="ruby-constant">Node</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:literal=</span><span class="ruby-operator">></span><span class="ruby-identifier">value</span>) <span class="ruby-keyword kw">end</span>
339
<span class="ruby-keyword kw">return</span> (<span class="ruby-constant">Redland</span><span class="ruby-operator">::</span><span class="ruby-identifier">librdf_parser_set_feature</span>(<span class="ruby-ivar">@parser</span>,<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">value</span>.<span class="ruby-identifier">node</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
340
<span class="ruby-keyword kw">end</span>
344
<div id="method-M000032" class="method-detail"><a name="M000032" id="M000032"></a>
345
<div class="method-heading"><a href="#M000032" class="method-signature"><span class="method-name">smush_file</span><span class="method-args">(model,uri,base_uri=nil,context=nil,idents=@idents)</span></a></div>
346
<div class="method-description">
347
<p><a class="source-toggle" href="#" onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
348
<div class="method-source-code" id="M000032-source">
350
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 190</span>
351
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">smush_file</span>(<span class="ruby-identifier">model</span>,<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">context</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">idents</span>=<span class="ruby-ivar">@idents</span>)
352
<span class="ruby-identifier">to_change</span> = {}
353
<span class="ruby-identifier">temp_model</span> = <span class="ruby-constant">Model</span>.<span class="ruby-identifier">new</span>()
354
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse_into_model</span>(<span class="ruby-identifier">temp_model</span>,<span class="ruby-identifier">uri</span>,<span class="ruby-identifier">base_uri</span>,<span class="ruby-identifier">context</span>)
355
<span class="ruby-identifier">idents</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ident</span><span class="ruby-operator">|</span>
356
<span class="ruby-identifier">temp_model</span>.<span class="ruby-identifier">find</span>(<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">ident</span>,<span class="ruby-keyword kw">nil</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
357
<span class="ruby-identifier">old_id</span> = <span class="ruby-identifier">s</span>
358
<span class="ruby-identifier">new_id</span> = <span class="ruby-identifier">model</span>.<span class="ruby-identifier">subject</span>(<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span>)
359
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">new_id</span>
360
<span class="ruby-identifier">to_change</span>[<span class="ruby-identifier">old_id</span>.<span class="ruby-identifier">to_s</span>]= <span class="ruby-identifier">new_id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">to_change</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">old_id</span>.<span class="ruby-identifier">to_s</span>)
361
<span class="ruby-keyword kw">end</span>
363
<span class="ruby-keyword kw">end</span>
364
<span class="ruby-comment cmt">#puts to_change</span>
365
<span class="ruby-identifier">temp_model</span>.<span class="ruby-identifier">triples</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
366
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">to_change</span>[<span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">to_change</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s</span>)
367
<span class="ruby-identifier">model</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span>,<span class="ruby-identifier">context</span>)
368
<span class="ruby-keyword kw">end</span>
370
<span class="ruby-keyword kw">end</span>
374
<div id="method-M000031" class="method-detail"><a name="M000031" id="M000031"></a>
375
<div class="method-heading"><a href="#M000031" class="method-signature"><span class="method-name">smush_string</span><span class="method-args">(string,model,idents=@idents)</span></a></div>
376
<div class="method-description">
377
<p><a class="source-toggle" href="#" onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
378
<div class="method-source-code" id="M000031-source">
380
<span class="ruby-comment cmt"># File rdf/redland/parser.rb, line 169</span>
381
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">smush_string</span>(<span class="ruby-identifier">string</span>,<span class="ruby-identifier">model</span>,<span class="ruby-identifier">idents</span>=<span class="ruby-ivar">@idents</span>)
382
<span class="ruby-identifier">to_change</span> = {}
383
<span class="ruby-identifier">temp_model</span> = <span class="ruby-constant">Model</span>.<span class="ruby-identifier">new</span>()
384
<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse_string_into_model</span>(<span class="ruby-identifier">temp_model</span>,<span class="ruby-identifier">string</span>,<span class="ruby-value str">'http://xml.com'</span>)
385
<span class="ruby-identifier">idents</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ident</span><span class="ruby-operator">|</span>
386
<span class="ruby-identifier">temp_model</span>.<span class="ruby-identifier">find</span>(<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">ident</span>,<span class="ruby-keyword kw">nil</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
387
<span class="ruby-identifier">old_id</span> = <span class="ruby-identifier">s</span>
388
<span class="ruby-identifier">new_id</span> = <span class="ruby-identifier">model</span>.<span class="ruby-identifier">subject</span>(<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span>)
389
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">new_id</span>
390
<span class="ruby-identifier">to_change</span>[<span class="ruby-identifier">old_id</span>.<span class="ruby-identifier">to_s</span>]= <span class="ruby-identifier">new_id</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">to_change</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">old_id</span>.<span class="ruby-identifier">to_s</span>)
391
<span class="ruby-keyword kw">end</span>
393
<span class="ruby-keyword kw">end</span>
394
<span class="ruby-comment cmt">#puts to_change</span>
395
<span class="ruby-identifier">temp_model</span>.<span class="ruby-identifier">triples</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span><span class="ruby-operator">|</span>
396
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">to_change</span>[<span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">to_change</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s</span>)
397
<span class="ruby-identifier">model</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">s</span>,<span class="ruby-identifier">p</span>,<span class="ruby-identifier">o</span>)
398
<span class="ruby-keyword kw">end</span>
400
<span class="ruby-keyword kw">end</span>
408
<div class="outerHeader">
409
Go to <a href="/" target="_parent">Redland Home</a> -
410
<a href="/bindings/" target="_parent">Language Bindings Home</a> -
411
<a href="/docs/ruby.html" target="_parent">Ruby API Home</a>
414
<p>(C) Copyright 2004-2011 <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>
416
</div> <!-- end outerBlock -->