rsinger-rdfobjects 0.1.3 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,308 @@
1
+ <?xml version="1.0" ?>
2
+
3
+ <!-- RDFT 2.0 by Jason Diamond <http://injektilo.org/>
4
+ |
5
+ | Transforms RDF/XML into N-Triples. See <http://www.w3.org/TR/rdf-syntax-grammar>
6
+ | and <http://www.w3.org/TR/rdf-testcases/#ntriples> for more information.
7
+ |
8
+ | This version requires that all RDF attributes be qualified!
9
+ |
10
+ | Specify the base-uri parameter as the URI for the source document in
11
+ | order to resolve relative URIs (currently just rdf:ID attributes).
12
+ |
13
+ | Import this transform and override the output-statement and
14
+ | output-literal-statement named templates to create your own output
15
+ | formats.
16
+ |
17
+ | TODO:
18
+ |
19
+ | * Reification.
20
+ | * Correct URI resolution.
21
+ | * Fix bugs.
22
+ | * Track RDF Working Draft changes.
23
+ | * More helpful error checking.
24
+ | * Documentation.
25
+ | * More?
26
+ |
27
+ | HISTORY:
28
+ |
29
+ | 2002-01-02:
30
+ | * First Draft.
31
+ +-->
32
+
33
+ <xsl:transform version="1.0"
34
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
35
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
36
+ >
37
+ <xsl:output method="text" encoding="utf-8" />
38
+
39
+ <xsl:param name="base-uri" />
40
+
41
+ <xsl:template match="text()" />
42
+ <xsl:template match="text()" mode="node" />
43
+ <xsl:template match="text()" mode="property" />
44
+
45
+ <xsl:template match="rdf:RDF">
46
+ <xsl:apply-templates mode="node" />
47
+ </xsl:template>
48
+
49
+ <!-- node elements -->
50
+
51
+ <xsl:template match="*" mode="node">
52
+ <xsl:param name="subject" />
53
+ <xsl:param name="predicate" />
54
+
55
+ <xsl:variable name="id">
56
+ <xsl:choose>
57
+ <xsl:when test="@rdf:ID">
58
+ <xsl:value-of select="concat($base-uri, '#', @rdf:ID)" />
59
+ </xsl:when>
60
+ <xsl:when test="@rdf:about">
61
+ <xsl:value-of select="@rdf:about" />
62
+ </xsl:when>
63
+ <xsl:when test="@ID">
64
+ <xsl:message terminate="yes">error: encountered unqualified ID attribute!</xsl:message>
65
+ </xsl:when>
66
+ <xsl:when test="@about">
67
+ <xsl:message terminate="yes">error: encountered unqualified about attribute!</xsl:message>
68
+ </xsl:when>
69
+ <xsl:otherwise>
70
+ <xsl:value-of select="concat('_:', generate-id())" />
71
+ </xsl:otherwise>
72
+ </xsl:choose>
73
+ </xsl:variable>
74
+
75
+ <xsl:if test="not(self::rdf:Description)">
76
+ <xsl:call-template name="output-type-statement">
77
+ <xsl:with-param name="subject" select="$id" />
78
+ <xsl:with-param name="object">
79
+ <xsl:call-template name="check-li" />
80
+ </xsl:with-param>
81
+ </xsl:call-template>
82
+ </xsl:if>
83
+
84
+ <xsl:if test="$subject and $predicate">
85
+ <xsl:call-template name="output-statement">
86
+ <xsl:with-param name="subject" select="$subject" />
87
+ <xsl:with-param name="predicate" select="$predicate" />
88
+ <xsl:with-param name="object" select="$id" />
89
+ </xsl:call-template>
90
+ </xsl:if>
91
+
92
+ <xsl:apply-templates select="@*" mode="property">
93
+ <xsl:with-param name="subject" select="$id" />
94
+ </xsl:apply-templates>
95
+
96
+ <xsl:apply-templates mode="property">
97
+ <xsl:with-param name="subject" select="$id" />
98
+ </xsl:apply-templates>
99
+
100
+ </xsl:template>
101
+
102
+ <!-- property elements -->
103
+
104
+ <xsl:template match="*[*]" mode="property">
105
+ <xsl:param name="subject" />
106
+
107
+ <xsl:variable name="predicate">
108
+ <xsl:call-template name="check-li" />
109
+ </xsl:variable>
110
+
111
+ <xsl:apply-templates mode="node">
112
+ <xsl:with-param name="subject" select="$subject" />
113
+ <xsl:with-param name="predicate" select="$predicate" />
114
+ </xsl:apply-templates>
115
+
116
+ </xsl:template>
117
+
118
+ <xsl:template match="*[not(*)][text()]" mode="property">
119
+ <xsl:param name="subject" />
120
+
121
+ <xsl:variable name="predicate">
122
+ <xsl:call-template name="check-li" />
123
+ </xsl:variable>
124
+
125
+ <xsl:call-template name="output-literal-statement">
126
+ <xsl:with-param name="subject" select="$subject" />
127
+ <xsl:with-param name="predicate" select="$predicate" />
128
+ <xsl:with-param name="object" select="." />
129
+ </xsl:call-template>
130
+
131
+ </xsl:template>
132
+
133
+ <xsl:template match="*[not(node())]" mode="property">
134
+ <xsl:param name="subject" />
135
+
136
+ <xsl:variable name="predicate">
137
+ <xsl:call-template name="check-li" />
138
+ </xsl:variable>
139
+
140
+ <xsl:choose>
141
+
142
+ <xsl:when test="not(@*) or (@rdf:ID and count(@*) = 1)">
143
+ <xsl:call-template name="output-literal-statement">
144
+ <xsl:with-param name="subject" select="$subject" />
145
+ <xsl:with-param name="predicate" select="$predicate" />
146
+ <xsl:with-param name="object" select="''" />
147
+ </xsl:call-template>
148
+ </xsl:when>
149
+
150
+ <xsl:when test="@rdf:resource and count(@*) = 1">
151
+ <xsl:call-template name="output-statement">
152
+ <xsl:with-param name="subject" select="$subject" />
153
+ <xsl:with-param name="predicate" select="$predicate" />
154
+ <xsl:with-param name="object" select="@rdf:resource" />
155
+ </xsl:call-template>
156
+ </xsl:when>
157
+
158
+ <xsl:otherwise>
159
+ <xsl:variable name="id">
160
+ <xsl:choose>
161
+ <xsl:when test="@rdf:resource">
162
+ <xsl:value-of select="@rdf:resource" />
163
+ </xsl:when>
164
+ <xsl:when test="@rdf:ID">
165
+ <xsl:value-of select="concat($base-uri, '#', @rdf:ID)" />
166
+ </xsl:when>
167
+ <xsl:otherwise>
168
+ <xsl:value-of select="concat('_:', generate-id())" />
169
+ </xsl:otherwise>
170
+ </xsl:choose>
171
+ </xsl:variable>
172
+ <xsl:variable name="property-attributes">
173
+ <xsl:apply-templates select="@*" mode="property">
174
+ <xsl:with-param name="subject" select="$id" />
175
+ </xsl:apply-templates>
176
+ </xsl:variable>
177
+ <xsl:if test="$property-attributes">
178
+ <xsl:call-template name="output-statement">
179
+ <xsl:with-param name="subject" select="$subject" />
180
+ <xsl:with-param name="predicate" select="$predicate" />
181
+ <xsl:with-param name="object" select="$id" />
182
+ </xsl:call-template>
183
+ <xsl:copy-of select="$property-attributes" />
184
+ </xsl:if>
185
+ </xsl:otherwise>
186
+
187
+ </xsl:choose>
188
+
189
+ </xsl:template>
190
+
191
+ <!-- property attributes -->
192
+
193
+ <xsl:template match="@rdf:RDF" mode="property" />
194
+ <xsl:template match="@rdf:Description" mode="property" />
195
+ <xsl:template match="@rdf:ID" mode="property" />
196
+ <xsl:template match="@rdf:about" mode="property" />
197
+ <xsl:template match="@rdf:bagID" mode="property" />
198
+ <xsl:template match="@rdf:parseType" mode="property" />
199
+ <xsl:template match="@rdf:resource" mode="property" />
200
+ <xsl:template match="@rdf:li" mode="property" />
201
+
202
+ <xsl:template match="@rdf:type" mode="property">
203
+ <xsl:param name="subject" />
204
+
205
+ <xsl:call-template name="output-type-statement">
206
+ <xsl:with-param name="subject" select="$subject" />
207
+ <xsl:with-param name="object" select="." />
208
+ </xsl:call-template>
209
+
210
+ </xsl:template>
211
+
212
+ <xsl:template match="@*" mode="property">
213
+ <xsl:param name="subject" />
214
+
215
+ <xsl:call-template name="output-literal-statement">
216
+ <xsl:with-param name="subject" select="$subject" />
217
+ <xsl:with-param name="predicate" select="concat(namespace-uri(), local-name())" />
218
+ <xsl:with-param name="object" select="." />
219
+ </xsl:call-template>
220
+
221
+ </xsl:template>
222
+
223
+ <!-- helper templates -->
224
+
225
+ <xsl:template name="check-li">
226
+
227
+ <xsl:variable name="id" select="concat(namespace-uri(), local-name())" />
228
+
229
+ <xsl:choose>
230
+ <xsl:when test="$id = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#li'">
231
+ <xsl:value-of select="concat('http://www.w3.org/1999/02/22-rdf-syntax-ns#_', 1 + count(preceding-sibling::rdf:li))" />
232
+ </xsl:when>
233
+ <xsl:otherwise>
234
+ <xsl:value-of select="$id" />
235
+ </xsl:otherwise>
236
+ </xsl:choose>
237
+
238
+ </xsl:template>
239
+
240
+ <xsl:template name="output-type-statement">
241
+ <xsl:param name="subject" />
242
+ <xsl:param name="object" />
243
+
244
+ <xsl:call-template name="output-statement">
245
+ <xsl:with-param name="subject" select="$subject" />
246
+ <xsl:with-param name="predicate" select="'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'" />
247
+ <xsl:with-param name="object" select="$object" />
248
+ </xsl:call-template>
249
+
250
+ </xsl:template>
251
+
252
+ <xsl:template name="output-statement">
253
+ <xsl:param name="subject" />
254
+ <xsl:param name="predicate" />
255
+ <xsl:param name="object" />
256
+
257
+ <xsl:if test="not(starts-with($subject, '_:'))">
258
+ <xsl:text>&lt;</xsl:text>
259
+ </xsl:if>
260
+
261
+ <xsl:value-of select="$subject" />
262
+
263
+ <xsl:if test="not(starts-with($subject, '_:'))">
264
+ <xsl:text>&gt;</xsl:text>
265
+ </xsl:if>
266
+
267
+ <xsl:text> &lt;</xsl:text>
268
+ <xsl:value-of select="$predicate" />
269
+ <xsl:text>&gt; </xsl:text>
270
+
271
+ <xsl:if test="not(starts-with($object, '_:'))">
272
+ <xsl:text>&lt;</xsl:text>
273
+ </xsl:if>
274
+
275
+ <xsl:value-of select="$object" />
276
+
277
+ <xsl:if test="not(starts-with($object, '_:'))">
278
+ <xsl:text>&gt;</xsl:text>
279
+ </xsl:if>
280
+
281
+ <xsl:text> .&#10;</xsl:text>
282
+
283
+ </xsl:template>
284
+
285
+ <xsl:template name="output-literal-statement">
286
+ <xsl:param name="subject" />
287
+ <xsl:param name="predicate" />
288
+ <xsl:param name="object" />
289
+
290
+ <xsl:if test="not(starts-with($subject, '_:'))">
291
+ <xsl:text>&lt;</xsl:text>
292
+ </xsl:if>
293
+
294
+ <xsl:value-of select="$subject" />
295
+
296
+ <xsl:if test="not(starts-with($subject, '_:'))">
297
+ <xsl:text>&gt;</xsl:text>
298
+ </xsl:if>
299
+
300
+ <xsl:text> &lt;</xsl:text>
301
+ <xsl:value-of select="$predicate" />
302
+ <xsl:text>&gt; "</xsl:text>
303
+ <xsl:value-of select="$object" />
304
+ <xsl:text>" .&#10;</xsl:text>
305
+
306
+ </xsl:template>
307
+
308
+ </xsl:transform>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsinger-rdfobjects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Singer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-07 00:00:00 -07:00
12
+ date: 2009-09-08 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,29 +42,40 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: "0"
44
44
  version:
45
- description:
45
+ description: RDFObjects are intended to simplify working with RDF data by providing a (more) Ruby-like interface to resources (thanks to OpenStruct).
46
46
  email: rossfsinger@gmail.com
47
47
  executables: []
48
48
 
49
49
  extensions: []
50
50
 
51
- extra_rdoc_files: []
52
-
53
- files:
51
+ extra_rdoc_files:
52
+ - LICENSE
54
53
  - README
54
+ files:
55
55
  - LICENSE
56
- has_rdoc: true
56
+ - README
57
+ - lib/rdf_objects.rb
58
+ - lib/rdf_objects/curies.rb
59
+ - lib/rdf_objects/data_types.rb
60
+ - lib/rdf_objects/http_client.rb
61
+ - lib/rdf_objects/parsers.rb
62
+ - lib/rdf_objects/rdf_resource.rb
63
+ - lib/rdf_objects/serializers.rb
64
+ - lib/xsl/RDFa2RDFXML.xsl
65
+ - lib/xsl/rdf2nt.xsl
66
+ has_rdoc: false
57
67
  homepage: http://github.com/rsinger/RDFObjects/tree
68
+ licenses:
58
69
  post_install_message:
59
- rdoc_options: []
60
-
70
+ rdoc_options:
71
+ - --charset=UTF-8
61
72
  require_paths:
62
73
  - lib
63
74
  required_ruby_version: !ruby/object:Gem::Requirement
64
75
  requirements:
65
76
  - - ">="
66
77
  - !ruby/object:Gem::Version
67
- version: 1.8.6
78
+ version: "0"
68
79
  version:
69
80
  required_rubygems_version: !ruby/object:Gem::Requirement
70
81
  requirements:
@@ -75,9 +86,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
86
  requirements: []
76
87
 
77
88
  rubyforge_project:
78
- rubygems_version: 1.2.0
89
+ rubygems_version: 1.3.5
79
90
  signing_key:
80
- specification_version: 2
81
- summary: RDFObjects are intended to simplify working with RDF data by providing a (more) Ruby-like interface to resources (thanks to OpenStruct).
91
+ specification_version: 3
92
+ summary: A DSL for working with RDF resources.
82
93
  test_files: []
83
94