yaparc 0.2.3 → 0.3.0

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.
data/test/test_owl.rb DELETED
@@ -1,1039 +0,0 @@
1
- =begin
2
- ontology ::= 'Ontology(' [ ontologyID ] { directive } ')'
3
- directive ::= 'Annotation(' ontologyPropertyID ontologyID ')'
4
- | 'Annotation(' annotationPropertyID URIreference ')'
5
- | 'Annotation(' annotationPropertyID dataLiteral ')'
6
- | 'Annotation(' annotationPropertyID individual ')'
7
- | axiom
8
- | fact
9
- datatypeID ::= URIreference
10
- classID ::= URIreference
11
- individualID ::= URIreference
12
- ontologyID ::= URIreference
13
- datavaluedPropertyID ::= URIreference
14
- individualvaluedPropertyID ::= URIreference
15
- annotationPropertyID ::= URIreference
16
- ontologyPropertyID ::= URIreference
17
-
18
- fact ::= individual
19
- axiom ::= 'Class(' classID ['Deprecated'] modality { annotation } { description } ')'
20
- | 'EnumeratedClass(' classID ['Deprecated'] { annotation } { individualID } ')'
21
- | 'DisjointClasses(' description description { description } ')'
22
- | 'EquivalentClasses(' description { description } ')'
23
- | 'SubClassOf(' description description ')'
24
- | 'Datatype(' datatypeID ['Deprecated'] { annotation } )'
25
- | 'DatatypeProperty(' datavaluedPropertyID ['Deprecated'] { annotation } { 'super(' datavaluedPropertyID ')'} ['Functional'] { 'domain(' description ')' } { 'range(' dataRange ')' } ')'
26
- | 'ObjectProperty(' individualvaluedPropertyID ['Deprecated'] { annotation } { 'super(' individualvaluedPropertyID ')' } [ 'inverseOf(' individualvaluedPropertyID ')' ] [ 'Symmetric' ] [ 'Functional' | 'InverseFunctional' | 'Functional' 'InverseFunctional' | 'Transitive' ] { 'domain(' description ')' } { 'range(' description ')' } ')'
27
- | 'AnnotationProperty(' annotationPropertyID { annotation } ')'
28
- | 'OntologyProperty(' ontologyPropertyID { annotation } ')'
29
- | 'EquivalentProperties(' datavaluedPropertyID datavaluedPropertyID { datavaluedPropertyID } ')'
30
- | 'SubPropertyOf(' datavaluedPropertyID datavaluedPropertyID ')'
31
- | 'EquivalentProperties(' individualvaluedPropertyID individualvaluedPropertyID { individualvaluedPropertyID } ')'
32
- | 'SubPropertyOf(' individualvaluedPropertyID individualvaluedPropertyID ')'
33
-
34
- individual ::= 'Individual(' [ individualID ] { annotation } { 'type(' type ')' } { value } ')'
35
- value ::= 'value(' individualvaluedPropertyID individualID ')'
36
- | 'value(' individualvaluedPropertyID individual ')'
37
- | 'value(' datavaluedPropertyID dataLiteral ')'
38
- annotation ::= 'annotation(' annotationPropertyID URIreference ')'
39
- | 'annotation(' annotationPropertyID dataLiteral ')'
40
- | 'annotation(' annotationPropertyID individual ')'
41
-
42
- type ::= description
43
-
44
-
45
-
46
- description ::= classID
47
- | restriction
48
- | 'unionOf(' { description } ')'
49
- | 'intersectionOf(' { description } ')'
50
- | 'complementOf(' description ')'
51
- | 'oneOf(' { individualID } ')'
52
-
53
- restriction ::= 'restriction(' datavaluedPropertyID dataRestrictionComponent { dataRestrictionComponent } ')'
54
- | 'restriction(' individualvaluedPropertyID individualRestrictionComponent { individualRestrictionComponent } ')'
55
-
56
- individualRestrictionComponent ::= 'allValuesFrom(' description ')'
57
- | 'someValuesFrom(' description ')'
58
- | 'value(' individualID ')'
59
- | cardinality
60
- modality ::= 'complete' | 'partial'
61
-
62
- dataRestrictionComponent ::= 'allValuesFrom(' dataRange ')'
63
- | 'someValuesFrom(' dataRange ')'
64
- | 'value(' dataLiteral ')'
65
- | cardinality
66
-
67
- cardinality ::= 'minCardinality(' non-negative-integer ')'
68
- | 'maxCardinality(' non-negative-integer ')'
69
- | 'cardinality(' non-negative-integer ')'
70
- dataRange ::= datatypeID
71
- | 'rdfs:Literal'
72
- | 'oneOf(' { dataLiteral } ')'
73
-
74
-
75
- # http://www.w3.org/TR/rdf-concepts/#dfn-plain-literal
76
- dataLiteral ::= typedLiteral | plainLiteral
77
- typedLiteral ::= lexicalForm^^URIreference
78
- plainLiteral ::= lexicalForm | lexicalForm@languageTag
79
- lexicalForm ::= /"[^"]*"/ # as in RDF, a unicode string in normal form C
80
- languageTag ::= /[a-z-]+/ # as in RDF, an XML language tag
81
- =end
82
-
83
- module OWLParser
84
- KEYWORDS = %w{Ontology( Class( EnumeratedClass( DisjointClasses( EquivalentClasses( SubClassOf( Datatype( DatatypeProperty( ObjectProperty( AnnotationProperty( OntologyProperty( EquivalentProperties( SubPropertyOf( EquivalentProperties( type( Annotation( Individual( value( unionOf( intersectionOf( complementOf( oneOf( restriction( allValuesFrom( someValuesFrom( (minCardinality( maxCardinality( cardinality( rdfs:Literal}
85
-
86
- # ontology ::= 'Ontology(' [ ontologyID ] { directive } ')'
87
- class Ontology
88
- include Yaparc::Parsable
89
- def initialize
90
- @parser = lambda do |input|
91
- Yaparc::Seq.new(Yaparc::Literal.new('Ontology('),
92
- Yaparc::ZeroOne.new(OntologyID.new,{}),
93
- Yaparc::Many.new(Directive.new,{}),
94
- Yaparc::Literal.new(')')) do |_,ontologyID, directive,_|
95
- {:ontologyID => ontologyID, :directive => directive}
96
- end
97
- end
98
- end
99
- end
100
-
101
- # directive ::= 'Annotation(' ontologyPropertyID ontologyID ')'
102
- # | 'Annotation(' annotationPropertyID URIreference ')'
103
- # | 'Annotation(' annotationPropertyID dataLiteral ')'
104
- # | 'Annotation(' annotationPropertyID individual ')'
105
- # | axiom
106
- # | fact
107
- class Directive
108
- include Yaparc::Parsable
109
- def initialize
110
- @parser = lambda do |input|
111
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('Annotation('),
112
- OntologyPropertyID.new,
113
- OntologyID.new,
114
- Yaparc::Literal.new(')')) do |_,ontology_property_id,ontology_id,_|
115
- {:ontology_property_id => ontology_property_id, :ontology_id => ontology_id }
116
- end,
117
- Yaparc::Seq.new(Yaparc::Literal.new('Annotation('),
118
- AnnotationPropertyID.new,
119
- Yaparc::Alt.new(URIReference.new,
120
- DataLiteral.new,
121
- Individual.new),
122
- Yaparc::Literal.new(')')),
123
- Axiom.new,
124
- Fact.new)
125
- end
126
- end
127
- end
128
-
129
- # axiom ::= 'Class(' classID ['Deprecated'] modality { annotation } { description } ')'
130
- # | 'EnumeratedClass(' classID ['Deprecated'] { annotation } { individualID } ')'
131
- # | 'DisjointClasses(' description description { description } ')'
132
- # | 'EquivalentClasses(' description { description } ')'
133
- # | 'SubClassOf(' description description ')'
134
- # | 'Datatype(' datatypeID ['Deprecated'] { annotation } )'
135
- # | 'DatatypeProperty(' datavaluedPropertyID ['Deprecated'] { annotation } { 'super(' datavaluedPropertyID ')'} ['Functional'] { 'domain(' description ')' } { 'range(' dataRange ')' } ')'
136
- # | 'ObjectProperty(' individualvaluedPropertyID ['Deprecated'] { annotation } { 'super(' individualvaluedPropertyID ')' } [ 'inverseOf(' individualvaluedPropertyID ')' ] [ 'Symmetric' ] [ 'Functional' | 'InverseFunctional' | 'Functional' 'InverseFunctional' | 'Transitive' ] { 'domain(' description ')' } { 'range(' description ')' } ')'
137
- # | 'AnnotationProperty(' annotationPropertyID { annotation } ')'
138
- # | 'OntologyProperty(' ontologyPropertyID { annotation } ')'
139
- # | 'EquivalentProperties(' datavaluedPropertyID datavaluedPropertyID { datavaluedPropertyID } ')'
140
- # | 'SubPropertyOf(' datavaluedPropertyID datavaluedPropertyID ')'
141
- # | 'EquivalentProperties(' individualvaluedPropertyID individualvaluedPropertyID { individualvaluedPropertyID } ')'
142
- # | 'SubPropertyOf(' individualvaluedPropertyID individualvaluedPropertyID ')'
143
-
144
- class Axiom
145
- include Yaparc::Parsable
146
- def initialize
147
- @parser = lambda do |input|
148
- Yaparc::Alt.new(#'Class(' classID ['Deprecated'] modality { annotation } { description } ')'
149
- Yaparc::Seq.new(Yaparc::Literal.new('Class('),
150
- ClassID.new,
151
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Deprecated'),{}),
152
- Modality.new,
153
- Yaparc::Many.new(Annotation.new,{}),
154
- Yaparc::Many.new(Description.new,{}),
155
- Yaparc::Literal.new(')')) do |_,class_id, deprecated, modality, annotations, descriptions,_|
156
- {:class => {:class_id => class_id, :deprecated => deprecated, :modality => modality, :annotations => annotations, :descriptions => descriptions }}
157
- end,
158
- #'EnumeratedClass(' classID ['Deprecated'] { annotation } { individualID } ')'
159
- Yaparc::Seq.new(Yaparc::Literal.new('EnumeratedClass('),
160
- ClassID.new,
161
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Deprecated'),{}),
162
- Yaparc::Many.new(Annotation.new,{}),
163
- Yaparc::Many.new(IndividualID.new,{}),
164
- Yaparc::Literal.new(')')) do |_,class_id, deprecated, annotations, individual_ids,_|
165
- {:enumerated_class => {:class_id => class_id, :deprecated => deprecated, :annotations => annotations, :individual_ids => individual_ids }}
166
- end,
167
- #'DisjointClasses(' description description { description } ')'
168
- Yaparc::Seq.new(Yaparc::Literal.new('DisjointClasses('),
169
- Description.new,
170
- Yaparc::ManyOne.new(Description.new,{}),
171
- Yaparc::Literal.new(')')) do |_,description,descriptions,_|
172
- {:disjoint_classes => description.merge(descriptions)}
173
- end,
174
- #'EquivalentClasses(' description { description } ')'
175
- Yaparc::Seq.new(Yaparc::Literal.new('EquivalentClasses('),
176
- Yaparc::ManyOne.new(Description.new,{ }),
177
- Yaparc::Literal.new(')')) do |_,descriptions,_|
178
- {:equivalent_classes => descriptions}
179
- end,
180
- #'SubClassOf(' description description ')'
181
- Yaparc::Seq.new(Yaparc::Literal.new('SubClassOf('),
182
- Description.new,
183
- Description.new,
184
- Yaparc::Literal.new(')')) do |_,description1,description2,_|
185
- {:sub_class_of => description1.merge(description2)}
186
- end,
187
- #'Datatype(' datatypeID ['Deprecated'] { annotation } )'
188
- Yaparc::Seq.new(Yaparc::Literal.new('Datatype('),
189
- DatatypeID.new,
190
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Deprecated'),{}),
191
- Yaparc::Many.new(Annotation.new,{ }),
192
- Yaparc::Literal.new(')')) do |_,datatype_id,_,annotations,_|
193
- {:datatype => {:datatype_id => datatype_id,:annotations=> annotations }}
194
- end,
195
- #'DatatypeProperty(' datavaluedPropertyID ['Deprecated'] { annotation } { 'super(' datavaluedPropertyID ')'} ['Functional'] { 'domain(' description ')' } { 'range(' dataRange ')' } ')'
196
- Yaparc::Seq.new(Yaparc::Literal.new('DatatypeProperty('),
197
- DatavaluedPropertyID.new,
198
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Deprecated'),{}),
199
- Yaparc::Many.new(Annotation.new,{ }),
200
- Yaparc::Many.new(
201
- Yaparc::Seq.new(Yaparc::Literal.new('super('),
202
- DatavaluedPropertyID.new,
203
- Yaparc::Literal.new(')')),{}),
204
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Functional'),{}),
205
- Yaparc::Many.new(
206
- Yaparc::Seq.new(Yaparc::Literal.new('domain('),
207
- Description.new,
208
- Yaparc::Literal.new(')')),{}),
209
- Yaparc::Many.new(
210
- Yaparc::Seq.new(Yaparc::Literal.new('range('),
211
- DataRange.new,
212
- Yaparc::Literal.new(')')),{}),
213
- Yaparc::Literal.new(')')) do |_, datavalued_property_id, _, annotation, super_tag, functional, domain, range,_|
214
- {:datatype_property_id => {:annotation => annotation, :super_tag => super_tag, :functional => functional, :domain => domain, :range => range}}
215
- end,
216
- #'ObjectProperty(' individualvaluedPropertyID ['Deprecated'] { annotation } { 'super(' individualvaluedPropertyID ')' } [ 'inverseOf(' individualvaluedPropertyID ')' ] [ 'Symmetric' ] [ 'Functional' | 'InverseFunctional' | 'Functional' 'InverseFunctional' | 'Transitive' ] { 'domain(' description ')' } { 'range(' description ')' } ')'
217
- Yaparc::Seq.new(Yaparc::Literal.new('ObjectProperty('),
218
- IndividualvaluedPropertyID.new,
219
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Deprecated'),{}),
220
- Yaparc::Many.new(Annotation.new,{}),
221
- Yaparc::Many.new(
222
- Yaparc::Seq.new(Yaparc::Literal.new('super('),
223
- IndividualvaluedPropertyID.new,
224
- Yaparc::Literal.new(')')),{}),
225
- Yaparc::Many.new(
226
- Yaparc::Seq.new(Yaparc::Literal.new('inverseOf('),
227
- IndividualvaluedPropertyID.new,
228
- Yaparc::Literal.new(')')),{}),
229
- Yaparc::ZeroOne.new(Yaparc::Literal.new('Symmetric'),{}),
230
- Yaparc::Alt.new(
231
- Yaparc::Literal.new('Functional'),
232
- Yaparc::Literal.new('InverseFunctional'),
233
- Yaparc::Seq.new(Yaparc::Literal.new('Functional'), Yaparc::Literal.new('InverseFunctional')),
234
- Yaparc::Literal.new('Transitive')),
235
- Yaparc::Many.new(
236
- Yaparc::Seq.new(Yaparc::Literal.new('domain('),
237
- Description.new,
238
- Yaparc::Literal.new(')')),{}),
239
- Yaparc::Many.new(
240
- Yaparc::Seq.new(Yaparc::Literal.new('range('),
241
- Description.new,
242
- Yaparc::Literal.new(')')),{}),
243
-
244
- Yaparc::Literal.new(')')) do |_,individualvaluedPropertyID1, deprecated, annotation, super_tag,inverseOf,symmetric, functional, domain, range, _|
245
- {:object_property => {}}
246
- end,
247
- #'AnnotationProperty(' annotationPropertyID { annotation } ')'
248
- Yaparc::Seq.new(Yaparc::Literal.new('AnnotationPropertyID('),
249
- AnnotationPropertyID.new,
250
- Yaparc::ManyOne.new(Annotation.new,{}),
251
- Yaparc::Literal.new(')')) do |_, annotationPropertyID, annotation,_|
252
- {:annotationProperty => {:annotationPropertyID => annotationPropertyID, :annotation => annotation }}
253
- end,
254
- #'OntologyProperty(' ontologyPropertyID { annotation } ')'
255
- Yaparc::Seq.new(Yaparc::Literal.new('OntologyProperty('),
256
- OntologyPropertyID.new,
257
- Yaparc::ManyOne.new(Annotation.new,{}),
258
- Yaparc::Literal.new(')')) do |_, ontologyPropertyID, annotation,_|
259
- {:OntologyProperty => {:ontologyPropertyID => ontologyPropertyID, :annotation => annotation }}
260
- end,
261
- #'EquivalentProperties(' datavaluedPropertyID datavaluedPropertyID { datavaluedPropertyID } ')'
262
- Yaparc::Seq.new(Yaparc::Literal.new('EquivalentProperties('),
263
- DatavaluedPropertyID.new,
264
- Yaparc::ManyOne.new(DatavaluedPropertyID.new,{}),
265
- Yaparc::Literal.new(')')) do |_,datavaluedPropertyID, datavaluedPropertyIDs,_|
266
- {:equivalentProperties => {}}
267
- end,
268
- #'SubPropertyOf(' datavaluedPropertyID datavaluedPropertyID ')'
269
- Yaparc::Seq.new(Yaparc::Literal.new('SubPropertyOf('),
270
- DatavaluedPropertyID.new,
271
- DatavaluedPropertyID.new,
272
- Yaparc::Literal.new(')')) do |_,datavaluedPropertyID1, datavaluedPropertyID2,_|
273
- {:subPropertyOf => {}}
274
- end,
275
- #'EquivalentProperties(' individualvaluedPropertyID individualvaluedPropertyID { individualvaluedPropertyID } ')'
276
- Yaparc::Seq.new(Yaparc::Literal.new('EquivalentProperties('),
277
- IndividualvaluedPropertyID.new,
278
- Yaparc::ManyOne.new(IndividualvaluedPropertyID.new,{}),
279
- Yaparc::Literal.new(')')) do |_,individualvaluedPropertyID,individualvaluedPropertyIDs,_|
280
- {:equivalentProperties => {}}
281
- end,
282
- #'SubPropertyOf(' individualvaluedPropertyID individualvaluedPropertyID ')'
283
- Yaparc::Seq.new(Yaparc::Literal.new('SubPropertyOf('),
284
- IndividualvaluedPropertyID.new,
285
- IndividualvaluedPropertyID.new,
286
- Yaparc::Literal.new(')')) do |_,individualvaluedPropertyID1, individualvaluedPropertyID2,_|
287
- {:subPropertyOf => { }}
288
- end)
289
- end
290
- end
291
- end
292
-
293
- # fact ::= individual
294
- class Fact
295
- include Yaparc::Parsable
296
- def initialize
297
- @parser = lambda do |input|
298
- Individual.new
299
- end
300
- end
301
- end
302
-
303
- # individual ::= 'Individual(' [ individualID ] { annotation } { 'type(' type ')' } { value } ')'
304
- class Individual
305
- include Yaparc::Parsable
306
- def initialize
307
- @parser = lambda do |input|
308
- Yaparc::Seq.new(Yaparc::Literal.new('Individual('),
309
- Yaparc::ZeroOne.new(IndividualID.new,{}),
310
- Yaparc::Many.new(Annotation.new,{ }),
311
- Yaparc::Many.new(
312
- Yaparc::Seq.new(Yaparc::Literal.new('type('),
313
- Type.new,
314
- Yaparc::Literal.new(')')) do |_, type, _|
315
- {:type => type}
316
- end,{}),
317
- # Yaparc::Apply.new(Yaparc::Many.new(Value.new,{ })) do |value|
318
- # {:value => value}
319
- # end,
320
- Yaparc::Many.new(Value.new,{ }),
321
- Yaparc::Literal.new(')')) do |_,individual_id, annotations, types, values,_|
322
- individual_id.merge(annotations).merge(types).merge(values)
323
- # {:individual_id => individual_id, :annotations => annotations, :types => types, :values => values}
324
- end
325
- end
326
- end
327
- end
328
-
329
- # annotation ::= 'annotation(' annotationPropertyID URIreference ')'
330
- # | 'annotation(' annotationPropertyID dataLiteral ')'
331
- # | 'annotation(' annotationPropertyID individual ')'
332
- class Annotation
333
- include Yaparc::Parsable
334
- def initialize
335
- @parser = lambda do |input|
336
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('annotation('),
337
- AnnotationPropertyID.new,
338
- URIReference.new,
339
- Yaparc::Literal.new(')')) do |_,annotation_property_id, uri_reference, _|
340
- {:annotation_property_id => annotation_property_id, :uri_reference => uri_reference }
341
- end,
342
- Yaparc::Seq.new(Yaparc::Literal.new('annotation('),
343
- AnnotationPropertyID.new,
344
- DataLiteral.new,
345
- Yaparc::Literal.new(')')) do |_,annotation_property_id, data_literal, _|
346
- {:annotation_property_id => annotation_property_id, :data_literal => data_literal}
347
- end,
348
- Yaparc::Seq.new(Yaparc::Literal.new('annotation('),
349
- AnnotationPropertyID.new,
350
- Individual.new,
351
- Yaparc::Literal.new(')')) do |_,annotation_property_id, individual, _|
352
- {:annotation_property_id => annotation_property_id, :individual => individual }
353
- end)
354
- end
355
- end
356
- end
357
-
358
-
359
- # value ::= 'value(' individualvaluedPropertyID individualID ')'
360
- # | 'value(' individualvaluedPropertyID individual ')'
361
- # | 'value(' datavaluedPropertyID dataLiteral ')'
362
- class Value
363
- include Yaparc::Parsable
364
- def initialize
365
- @parser = lambda do |input|
366
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('value('),
367
- IndividualvaluedPropertyID.new,
368
- IndividualID.new,
369
- Yaparc::Literal.new(')')) do |_,individualvalued_property_id, individual_id,_|
370
- {:individualvalued_property_id => individualvalued_property_id, :individual_id => individual_id }
371
- end,
372
- Yaparc::Seq.new(Yaparc::Literal.new('value('),
373
- IndividualvaluedPropertyID.new,
374
- Individual.new,
375
- Yaparc::Literal.new(')')) do |_,individualvalued_property_id, individual,_|
376
- {:individualvalued_property_id => individualvalued_property_id, :individual => individual}
377
- end,
378
- Yaparc::Seq.new(Yaparc::Literal.new('value('),
379
- IndividualvaluedPropertyID.new,
380
- DataLiteral.new,
381
- Yaparc::Literal.new(')')) do |_,individualvalued_property_id, data_literal,_|
382
- {:individualvalued_property_id => individualvalued_property_id, :data_literal => data_literal}
383
-
384
- end)
385
- end
386
- end
387
- end
388
-
389
- # type ::= description
390
- class Type
391
- include Yaparc::Parsable
392
- def initialize
393
- @parser = lambda do |input|
394
- Description.new
395
- end
396
- end
397
- end
398
-
399
- # description ::= classID
400
- # | restriction
401
- # | 'unionOf(' { description } ')'
402
- # | 'intersectionOf(' { description } ')'
403
- # | 'complementOf(' description ')'
404
- # | 'oneOf(' { individualID } ')'
405
- class Description
406
- include Yaparc::Parsable
407
- def initialize
408
- @parser = lambda do |input|
409
- Yaparc::Alt.new(Restriction.new,
410
- Yaparc::Seq.new(Yaparc::Literal.new('unionOf('),
411
- Yaparc::Many.new(Description.new,{ }),
412
- Yaparc::Literal.new(')')) do |_,description,_|
413
- {:unionOf => description}
414
- end,
415
- Yaparc::Seq.new(Yaparc::Literal.new('intersectionOf('),
416
- Yaparc::Many.new(Description.new,{ }),
417
- Yaparc::Literal.new(')')) do |_,description,_|
418
- {:intersectionOf => description}
419
- end,
420
- Yaparc::Seq.new(Yaparc::Literal.new('complementOf('),
421
- Description.new,
422
- Yaparc::Literal.new(')')) do |_,description,_|
423
- {:complementOf => description}
424
- end,
425
- Yaparc::Seq.new(Yaparc::Literal.new('oneOf('),
426
- Yaparc::Many.new(IndividualID.new,{}),
427
- Yaparc::Literal.new(')')) do |_,description,_|
428
- {:oneOf => {:individual_id => description}}
429
- end,
430
- ClassID.new)
431
- end
432
- end
433
- end
434
-
435
- # restriction ::= 'restriction(' datavaluedPropertyID dataRestrictionComponent { dataRestrictionComponent } ')'
436
- # | 'restriction(' individualvaluedPropertyID individualRestrictionComponent { individualRestrictionComponent } ')'
437
- class Restriction
438
- include Yaparc::Parsable
439
- def initialize
440
- @parser = lambda do |input|
441
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('restriction('),
442
- DatavaluedPropertyID.new,
443
- Yaparc::ManyOne.new(DataRestrictionComponent.new,{ }),
444
- Yaparc::Literal.new(')')) do |_,datavalued_property_id, data_restriction_components,_|
445
- {:datavalued_property_id => datavalued_property_id, :data_restriction_components => data_restriction_components}
446
- end,
447
- Yaparc::Seq.new(Yaparc::Literal.new('restriction('),
448
- IndividualvaluedPropertyID.new,
449
- Yaparc::ManyOne.new(IndividualRestrictionComponent.new,{ }),
450
- Yaparc::Literal.new(')')) do |_,individualvalued_property_id, individual_restriction_components,_|
451
- {:individualvalued_property_id => individualvalued_property_id, :individual_restriction_components => individual_restriction_components}
452
- end)
453
- end
454
- end
455
- end
456
-
457
- # individualRestrictionComponent ::= 'allValuesFrom(' description ')'
458
- # | 'someValuesFrom(' description ')'
459
- # | 'value(' individualID ')'
460
- # | cardinality
461
- class IndividualRestrictionComponent
462
- include Yaparc::Parsable
463
- def initialize
464
- @parser = lambda do |input|
465
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('allValuesFrom('),
466
- Description.new,
467
- Yaparc::Literal.new(')')) do |_,description,_|
468
- {:allValuesFrom => description}
469
- end,
470
- Yaparc::Seq.new(Yaparc::Literal.new('someValuesFrom('),
471
- Description.new,
472
- Yaparc::Literal.new(')')) do |_,description,_|
473
- {:someValuesFrom => description}
474
- end,
475
- Yaparc::Seq.new(Yaparc::Literal.new('value('),
476
- IndividualID.new,
477
- Yaparc::Literal.new(')')) do |_,individual_id,_|
478
- {:value => individual_id}
479
- end,
480
- Cardinality.new)
481
- end
482
- end
483
- end
484
-
485
- # modality ::= 'complete' | 'partial'
486
- class Modality
487
- include Yaparc::Parsable
488
- def initialize
489
- @parser = lambda do |input|
490
- Yaparc::Alt.new(Yaparc::Literal.new('complete'),Yaparc::Literal.new('partial'))
491
- end
492
- end
493
- end
494
-
495
- # dataRestrictionComponent ::= 'allValuesFrom(' dataRange ')'
496
- # | 'someValuesFrom(' dataRange ')'
497
- # | 'value(' dataLiteral ')'
498
- # | cardinality
499
- class DataRestrictionComponent
500
- include Yaparc::Parsable
501
- def initialize
502
- @parser = lambda do |input|
503
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('allValuesFrom('),
504
- DataRange.new,
505
- Yaparc::Literal.new(')')) do |_,data_range,_|
506
- {:allValuesFrom => data_range }
507
- end,
508
- Yaparc::Seq.new(Yaparc::Literal.new('someValuesFrom('),
509
- DataRange.new,
510
- Yaparc::Literal.new(')')) do |_,data_range,_|
511
- {:someValuesFrom => data_range }
512
- end,
513
- Yaparc::Seq.new(Yaparc::Literal.new('value('),
514
- DataLiteral.new,
515
- Yaparc::Literal.new(')')) do |_,data_literal,_|
516
- {:value => data_literal }
517
- end,
518
- Cardinality.new)
519
- end
520
- end
521
- end
522
-
523
- # cardinality ::= 'minCardinality(' non-negative-integer ')'
524
- # | 'maxCardinality(' non-negative-integer ')'
525
- # | 'cardinality(' non-negative-integer ')'
526
-
527
- class Cardinality
528
- include Yaparc::Parsable
529
- def initialize
530
- @parser = lambda do |input|
531
- Yaparc::Alt.new(Yaparc::Seq.new(Yaparc::Literal.new('minCardinality('),
532
- Yaparc::Many.new(NonNegativeInteger.new,0),
533
- Yaparc::Literal.new(')')) do |_,integer,_|
534
- {:minCardinality => integer}
535
- end,
536
- Yaparc::Seq.new(Yaparc::Literal.new('maxCardinality('),
537
- Yaparc::Many.new(NonNegativeInteger.new,0),
538
- Yaparc::Literal.new(')')) do |_,integer,_|
539
- {:maxCardinality => integer}
540
- end,
541
- Yaparc::Seq.new(Yaparc::Literal.new('cardinality('),
542
- Yaparc::Many.new(NonNegativeInteger.new,0),
543
- Yaparc::Literal.new(')')) do |_,integer,_|
544
- {:cardinality => integer}
545
- end)
546
- end
547
- end
548
- end
549
-
550
- class NonNegativeInteger
551
- include Yaparc::Parsable
552
- def initialize
553
- @parser = lambda do |input|
554
- Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+/)) do |number|
555
- Integer(number)
556
- end
557
- end
558
- end
559
- end
560
-
561
-
562
- # dataRange ::= datatypeID
563
- # | 'rdfs:Literal'
564
- # | 'oneOf(' { dataLiteral } ')'
565
- class DataRange
566
- include Yaparc::Parsable
567
- def initialize
568
- @parser = lambda do |input|
569
- Yaparc::Alt.new(Yaparc::Literal.new('rdfs:Literal'),
570
- Yaparc::Seq.new(Yaparc::Literal.new('oneOf('),
571
- Yaparc::Many.new(DataLiteral.new,[]),
572
- Yaparc::Literal.new(')')) do |_,data_literals,_|
573
- {:oneOf => data_literals}
574
- end,
575
- DatatypeID.new)
576
- end
577
- end
578
- end
579
-
580
- # ontologyID ::= URIreference
581
- class OntologyID
582
- include Yaparc::Parsable
583
- def initialize
584
- @parser = lambda do |input|
585
- Yaparc::Apply.new(URIReference.new) do |uri|
586
- {:ontology_id => uri}
587
- end
588
- end
589
- end
590
- end
591
-
592
- # datavaluedPropertyID ::= URIreference
593
- class DatavaluedPropertyID
594
- include Yaparc::Parsable
595
- def initialize
596
- @parser = lambda do |input|
597
- Yaparc::Apply.new(URIReference.new) do |uri|
598
- {:datavalued_property_id => {:uri_reference => uri}}
599
- end
600
- #URIReference.new
601
- #URIParser::URIReference.new
602
- end
603
- end
604
- end
605
-
606
-
607
- # individualvaluedPropertyID ::= URIreference
608
- class IndividualvaluedPropertyID
609
- include Yaparc::Parsable
610
- def initialize
611
- @parser = lambda do |input|
612
- Yaparc::Apply.new(URIReference.new) do |uri|
613
- {:individualvalued_property_id => {:uri_reference => uri}}
614
- end
615
- end
616
- end
617
- end
618
-
619
- # annotationPropertyID ::= URIreference
620
- class AnnotationPropertyID
621
- include Yaparc::Parsable
622
- def initialize
623
- @parser = lambda do |input|
624
- Yaparc::Apply.new(URIReference.new) do |uri|
625
- {:annotation_property_id => uri}
626
- end
627
- end
628
- end
629
- end
630
-
631
- # ontologyPropertyID ::= URIreference
632
- class OntologyPropertyID
633
- include Yaparc::Parsable
634
- def initialize
635
- @parser = lambda do |input|
636
- Yaparc::Apply.new(URIReference.new) do |uri|
637
- {:ontology_property_id => {:uri_reference => uri}}
638
- end
639
- end
640
- end
641
- end
642
-
643
- # classID ::= URIreference
644
- class ClassID
645
- include Yaparc::Parsable
646
-
647
- def initialize
648
- @parser = lambda do |input|
649
- Yaparc::Apply.new(URIReference.new) do |uri|
650
- {:class_id => uri}
651
- end
652
- end
653
- end
654
- end
655
-
656
- # individualID ::= URIreference
657
- class IndividualID
658
- include Yaparc::Parsable
659
- def initialize
660
- @parser = lambda do |input|
661
- Yaparc::Apply.new(URIReference.new) do |uri|
662
- {:individual_id => uri}
663
- end
664
- end
665
- end
666
- end
667
-
668
- # datatypeID ::= URIreference
669
- class DatatypeID
670
- include Yaparc::Parsable
671
- def initialize
672
- @parser = lambda do |input|
673
- Yaparc::Apply.new(URIReference.new) do |uri|
674
- {:datatype_id => {:uri_reference => uri}}
675
- end
676
- end
677
- end
678
- end
679
-
680
- # dataLiteral ::= typedLiteral | plainLiteral
681
- class DataLiteral
682
- include Yaparc::Parsable
683
- def initialize
684
- @parser = lambda do |input|
685
- Yaparc::Alt.new(TypedLiteral.new,
686
- PlainLiteral.new)
687
- end
688
- end
689
- end
690
-
691
- # typedLiteral ::= lexicalForm^^URIreference
692
- class TypedLiteral
693
- include Yaparc::Parsable
694
- def initialize
695
- @parser = lambda do |input|
696
- Yaparc::Seq.new(LexicalForm.new,
697
- Yaparc::Literal.new('^^'),
698
- URIReference.new) do |lexical_form, _, uri|
699
- ["#{lexical_form}^^#{uri}"]
700
- end
701
- end
702
- end
703
- end
704
-
705
- # plainLiteral ::= lexicalForm | lexicalForm@languageTag
706
- class PlainLiteral
707
- include Yaparc::Parsable
708
- def initialize
709
- @parser = lambda do |input|
710
- Yaparc::Alt.new(Yaparc::Seq.new(LexicalForm.new,
711
- Yaparc::Literal.new('@'),
712
- LanguageTag.new) do |lexical_form,_,language_tag|
713
- [lexical_form + '@' + language_tag]
714
- end,
715
- LexicalForm.new)
716
- end
717
- end
718
- end
719
-
720
- #lexicalForm ::= as in RDF, a unicode string in normal form C
721
- class LexicalForm
722
- include Yaparc::Parsable
723
- def initialize
724
- @parser = lambda do |input|
725
- Yaparc::Apply.new(Yaparc::Regex.new(/"[^"]*"/)) do |lexical_form|
726
- lexical_form
727
- end
728
- end
729
- end
730
- end
731
-
732
- #languageTag ::= as in RDF, an XML language tag
733
- class LanguageTag
734
- include Yaparc::Parsable
735
- def initialize
736
- @parser = lambda do |input|
737
- Yaparc::Regex.new(/[a-zA-Z-]+/)
738
- end
739
- end
740
- end
741
-
742
- # ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
743
- class URIReference
744
- include Yaparc::Parsable
745
- def initialize
746
- @parser = lambda do |input|
747
-
748
- keyword_parsers = OWLParser::KEYWORDS.map {|keyword| Yaparc::Literal.new(keyword)}
749
- case result = Yaparc::Alt.new(*keyword_parsers).parse(input)
750
- when Yaparc::Result::OK
751
- return Yaparc::Fail.new
752
- end
753
-
754
- parser = Yaparc::Tokenize.new(Yaparc::Regex.new(/\A(([^:\/?# ]+):)?(\/\/([^\/?#() ]*))?([^?#() ]*)(\?([^# ]*))?(#(.*))?/), :prefix => Yaparc::Space.new, :postfix => Yaparc::Space.new)
755
- case result = parser.parse(input)
756
- when Yaparc::Result::OK
757
- unless result.value.empty?
758
- Yaparc::Result::OK.new(:value => {:uri_reference => result.value}, :input => result.input)
759
- else
760
- Yaparc::Fail.new
761
- end
762
- else
763
- result
764
- end
765
- end
766
- end
767
- end
768
- end
769
-
770
-
771
- class OwlTest < Test::Unit::TestCase
772
- include ::Yaparc
773
-
774
- def test_ontology
775
- ontology = OWLParser::Ontology.new
776
- result = ontology.parse("Ontology()")
777
- assert_instance_of Result::OK, result
778
- result = ontology.parse("Ontology(ex:ontology_id)")
779
- assert_instance_of Result::OK, result
780
- result = ontology.parse("Ontology(Class(ex:class complete annotation(ex:annotation http://localhost.localdomain )))")
781
- assert_instance_of Result::OK, result
782
- result = ontology.parse("Ontology(Class(ex:class Deprecated partial annotation(ex:annotation http://localhost.localdomain )))")
783
- assert_instance_of Result::OK, result
784
-
785
- ontology1 = <<-EOS
786
- Ontology(ontology1
787
- Class(Pc complete unionOf(Desktop Laptop))
788
- Individual(ibmR40 type(Laptop))
789
- Individual(compaqPresario200 type(Desktop))
790
- Class(PcOffice complete intersectionOf(Pc complementOf(Desktop))))
791
- EOS
792
- result = ontology.parse(ontology1)
793
- assert_instance_of Result::OK, result
794
- end
795
-
796
- def test_directive
797
- directive = OWLParser::Directive.new
798
- result = directive.parse("Class(ex:class complete )")
799
- assert_instance_of Result::OK, result
800
- result = directive.parse("Class(ex:class complete annotation(ex:annotation http://localhost.localdomain ))")
801
- assert_instance_of Result::OK, result
802
- result = directive.parse("Class(ex:class Deprecated partial annotation(ex:annotation http://localhost.localdomain ))")
803
- assert_instance_of Result::OK, result
804
- end
805
-
806
- def test_axiom
807
- axiom = OWLParser::Axiom.new
808
- result = axiom.parse("Class(Pc complete unionOf(Desktop Laptop))")
809
- assert_instance_of Result::OK, result
810
- result = axiom.parse("Class(ex:class_id complete )")
811
- assert_instance_of Result::OK, result
812
- result = axiom.parse("EnumeratedClass(ex:class_id Deprecated )")
813
- assert_instance_of Result::OK, result
814
- result = axiom.parse("Class(ex:class complete annotation(ex:annotation http://localhost.localdomain ))")
815
- assert_instance_of Result::OK, result
816
- result = axiom.parse("Class(ex:class Deprecated partial annotation(ex:annotation http://localhost.localdomain ))")
817
- result = axiom.parse("SubClassOf(ex:subclass ex:superclass)")
818
- assert_instance_of Result::OK, result
819
- end
820
-
821
- def test_annotation
822
- annotation = OWLParser::Annotation.new
823
- result = annotation.parse("annotation(ex:annotation http://localhost.localdomain)")
824
- assert_instance_of Result::OK, result
825
- result = annotation.parse("annotation(ex:annotation type(ex:human))")
826
- assert_instance_of Result::Fail, result
827
- result = annotation.parse('annotation(ex:annotation "akimichi"^^http://www.w3.org/2001/XMLSchema@integer)')
828
- assert_instance_of Result::OK, result
829
- assert_instance_of Result::Fail, annotation.parse("annotation(ex:annotation value(ex:human))")
830
- assert_instance_of Result::Fail, annotation.parse("annotation(ex:annotation type(ex:human) value(ex:human))")
831
- end
832
-
833
- def test_value
834
- value = OWLParser::Value.new
835
- result = value.parse("value(ex:value http://localhost.localdomain)")
836
- assert_instance_of Result::OK, result
837
- end
838
-
839
- def test_individual
840
- individual = OWLParser::Individual.new
841
- result = individual.parse("Individual(ex:individual)")
842
- assert_instance_of Result::OK, result
843
- assert_equal Hash[:individual_id=>{:uri_reference=>"ex:individual"}], result.value
844
- result = individual.parse("Individual(ex:individual type(ex:human))")
845
- assert_instance_of Result::OK, result
846
- assert_instance_of Result::OK, individual.parse("Individual(ex:individual type(ex:human))")
847
- assert_instance_of Result::OK, individual.parse("Individual(ex:individual value(ex:human http://localhost.localdomain))")
848
- assert_instance_of Result::OK, individual.parse("Individual(ex:individual type(ex:human) value(ex:human http://localhost.localdomain))")
849
- end
850
-
851
- def test_type
852
- type = OWLParser::Type.new
853
- assert_instance_of Result::OK, type.parse("http://localhost.localdomain")
854
- assert_instance_of Result::OK, type.parse("unionOf( )")
855
- assert_instance_of Result::OK, type.parse("unionOf(Desktop Laptop)")
856
- assert_instance_of Result::OK, type.parse("unionOf(http://localhost.localdomain)")
857
- assert_instance_of Result::OK, type.parse("ex:hasMember")
858
- assert_instance_of Result::OK, type.parse("unionOf(ex:hasMember)")
859
- assert_instance_of Result::OK, type.parse("intersectionOf(ex:hasMember)")
860
- assert_instance_of Result::OK, type.parse("complementOf(intersectionOf(ex:hasMember))")
861
- assert_instance_of Result::OK, type.parse("oneOf(ex:hasMember)")
862
- end
863
-
864
- def test_description
865
- description = OWLParser::Description.new
866
- assert_instance_of Result::OK, description.parse("http://localhost.localdomain")
867
- assert_instance_of Result::OK, description.parse("unionOf( )")
868
- assert_instance_of Result::OK, description.parse("unionOf(http://localhost.localdomain)")
869
- assert_instance_of Result::OK, description.parse("unionOf(Desktop Laptop)")
870
- assert_instance_of Result::OK, description.parse("ex:hasMember")
871
- assert_instance_of Result::OK, description.parse("unionOf(ex:hasMember)")
872
- assert_instance_of Result::OK, description.parse("intersectionOf(ex:hasMember)")
873
- assert_instance_of Result::OK, description.parse("complementOf(intersectionOf(ex:hasMember))")
874
- assert_instance_of Result::OK, description.parse("oneOf(ex:hasMember)")
875
- assert_instance_of Result::OK, description.parse("restriction(ex:hasMember allValuesFrom(ex:StringPlayer))")
876
- end
877
-
878
- def test_individual_restriction_component
879
- individual_restriction_component = OWLParser::IndividualRestrictionComponent.new
880
- result = individual_restriction_component.parse("allValuesFrom(ex:StringPlayer)")
881
- assert_instance_of Result::OK, result
882
- assert_equal "", result.input
883
- result = individual_restriction_component.parse("someValuesFrom(ex:StringPlayer)")
884
- assert_instance_of Result::OK, result
885
- assert_equal "", result.input
886
- result = individual_restriction_component.parse("value(ex:StringPlayer)")
887
- assert_instance_of Result::OK, result
888
- assert_equal "", result.input
889
- result = individual_restriction_component.parse("minCardinality(1)")
890
- assert_instance_of Result::OK, result
891
- assert_equal "", result.input
892
- end
893
-
894
- def test_restriction
895
- restriction = OWLParser::Restriction.new
896
- assert_instance_of Result::OK, restriction.parse("restriction(ex:hasMember value(datatype))")
897
- assert_instance_of Result::OK, restriction.parse("restriction(ex:hasMember allValuesFrom(ex:StringPlayer))")
898
- end
899
-
900
-
901
- def test_data_restriction_component
902
- data_restriction_component = OWLParser::DataRestrictionComponent.new
903
- assert_instance_of Result::OK, data_restriction_component.parse('value("akimichi"@ja)')
904
- assert_instance_of Result::OK, data_restriction_component.parse("allValuesFrom( rdfs:Literal )")
905
- assert_instance_of Result::OK, data_restriction_component.parse("allValuesFrom(ex:StringPlayer)")
906
- assert_instance_of Result::OK, data_restriction_component.parse("allValuesFrom(http://localhost.localdomain)")
907
- assert_instance_of Result::OK, data_restriction_component.parse("allValuesFrom(oneOf())")
908
- assert_instance_of Result::OK, data_restriction_component.parse('allValuesFrom(oneOf("akimichi"@ja))')
909
- assert_instance_of Result::OK, data_restriction_component.parse("maxCardinality(10)")
910
- assert_instance_of Result::OK, data_restriction_component.parse("cardinality(398)")
911
- assert_instance_of Result::OK, data_restriction_component.parse("minCardinality(1)")
912
- assert_instance_of Result::OK, data_restriction_component.parse("maxCardinality(10)")
913
- assert_instance_of Result::OK, data_restriction_component.parse("cardinality(398)")
914
-
915
- end
916
-
917
- def test_cardinality
918
- cardinality = OWLParser::Cardinality.new
919
- assert_instance_of Result::OK, cardinality.parse("minCardinality(1)")
920
- assert_instance_of Result::OK, cardinality.parse("maxCardinality(10)")
921
- assert_instance_of Result::OK, cardinality.parse("cardinality(398)")
922
-
923
- end
924
-
925
- def test_data_range
926
- data_range = OWLParser::DataRange.new
927
- assert_instance_of Result::OK, data_range.parse("datatype@localhost.localdomain")
928
- assert_instance_of Result::OK, data_range.parse("http://datatype@localhost.localdomain")
929
- assert_instance_of Result::OK, data_range.parse("http://localhost.localdomain")
930
- assert_instance_of Result::OK, data_range.parse("datatype@localhost.localdomain)")
931
- assert_instance_of Result::OK, data_range.parse("rdfs:Literal")
932
- assert_instance_of Result::OK, data_range.parse("oneOf()")
933
- assert_instance_of Result::OK, data_range.parse('oneOf("akimichi"@ja)')
934
- # assert_instance_of Result::OK, data_range.parse("oneOf( emile@datarange.localdomain )")
935
- end
936
-
937
- def test_data_literal
938
- data_literal = OWLParser::DataLiteral.new
939
- assert_instance_of Result::OK, data_literal.parse('"akimichi"@ja')
940
- assert_instance_of Result::OK, data_literal.parse('"akimichi"^^http://www.w3.org/2001/XMLSchema@integer')
941
- assert_instance_of Result::Fail, data_literal.parse("ex:hasMember")
942
- assert_instance_of Result::Fail, data_literal.parse("datatype")
943
- assert_instance_of Result::Fail, data_literal.parse("emile@localhost.localdomain")
944
- end
945
-
946
- def test_plain_literal
947
- plain_literal = OWLParser::PlainLiteral.new
948
- assert_instance_of Result::OK, plain_literal.parse('"akimichi"@ja')
949
- result = plain_literal.parse('"nick"@en-US')
950
- assert_instance_of Result::OK, result
951
- assert_equal ["\"nick\"@en-US"], result.value
952
- assert_instance_of Result::OK, plain_literal.parse('"akimichi"')
953
- end
954
-
955
- def test_typed_literal
956
- typed_literal = OWLParser::TypedLiteral.new
957
- assert_instance_of Result::OK, typed_literal.parse('"akimichi"^^http://www.w3.org/2001/XMLSchema@integer')
958
- end
959
-
960
- def test_lexical_form
961
- lexical_form = OWLParser::LexicalForm.new
962
- assert_instance_of Result::OK, lexical_form.parse('"ex:hasMember"')
963
- assert_instance_of Result::OK, lexical_form.parse('"datatype"')
964
- assert_instance_of Result::OK, lexical_form.parse('"emile@localhost.localdomain"')
965
- end
966
-
967
- def test_language_tag
968
- language_tag = OWLParser::LanguageTag.new
969
- assert_instance_of Result::OK, language_tag.parse("ja")
970
- result = language_tag.parse("en-US")
971
- assert_instance_of Result::OK, result
972
- assert_equal "en-US", result.value
973
- end
974
-
975
- def test_annotation_property_id
976
- annotation_property_id = OWLParser::AnnotationPropertyID.new
977
- result = annotation_property_id.parse("ex:annotation")
978
- assert_instance_of Result::OK, result
979
- assert_equal Hash[:annotation_property_id => {:uri_reference=>"ex:annotation"}], result.value
980
- end
981
-
982
- def test_individual_id
983
- individual_id = OWLParser::IndividualID.new
984
- assert_instance_of Result::Fail, individual_id.parse("type(")
985
- result = individual_id.parse("ex:individual")
986
- assert_instance_of Result::OK, result
987
- assert_equal "", result.input
988
- result = individual_id.parse("ex:individual type")
989
- assert_instance_of Result::OK, result
990
- assert_equal Hash[:individual_id => {:uri_reference=>"ex:individual"}], result.value
991
- assert_equal "type", result.input
992
- assert_instance_of Result::OK, individual_id.parse("http://localhost.localdomain:3000/pchar;param?query")
993
- assert_instance_of Result::OK, individual_id.parse("http://localhost.localdomain")
994
- end
995
-
996
- def test_ontology_id
997
- ontology_id = OWLParser::OntologyID.new
998
- assert_instance_of Result::OK, ontology_id.parse("http://localhost.localdomain:3000")
999
- result = ontology_id.parse("ex:individual type")
1000
- end
1001
-
1002
- def test_class_id
1003
- class_id = OWLParser::ClassID.new
1004
- result = class_id.parse("ex:class_id")
1005
- assert_instance_of Result::OK, result
1006
- assert_equal Hash[:class_id=>{:uri_reference=>"ex:class_id"}], result.value
1007
- result = class_id.parse("ex:individual")
1008
- assert_instance_of Result::OK, class_id.parse("http://localhost.localdomain:3000")
1009
- result = class_id.parse("ex:individual type")
1010
- assert_instance_of Result::OK, result
1011
- assert_equal Hash[:class_id=> {:uri_reference=>"ex:individual"}], result.value
1012
- assert_equal "type", result.input
1013
- assert_instance_of Result::OK, class_id.parse("http://localhost.localdomain:3000/pchar;param?query")
1014
- assert_instance_of Result::OK, class_id.parse("http://localhost.localdomain")
1015
- end
1016
-
1017
- def test_uri_reference
1018
- uri_reference = OWLParser::URIReference.new
1019
- assert_instance_of Result::OK, uri_reference.parse("http://localhost.localdomain:3000/pchar;param?query")
1020
- assert_instance_of Result::OK, uri_reference.parse("http://localhost.localdomain")
1021
- result = uri_reference.parse("http://localhost.localdomain")
1022
- assert_instance_of Result::OK, result
1023
- assert_equal Hash[:uri_reference=>"http://localhost.localdomain"], result.value
1024
- assert_equal "", result.input
1025
- result = uri_reference.parse("http://localhost.localdomain)")
1026
- assert_instance_of Result::OK, result
1027
- assert_equal Hash[:uri_reference=>"http://localhost.localdomain"], result.value
1028
- assert_equal ")", result.input
1029
- result = uri_reference.parse("ex:hasMember")
1030
- assert_instance_of Result::OK, result
1031
- assert_equal Hash[:uri_reference => "ex:hasMember"], result.value
1032
- assert_equal "", result.input
1033
- result = uri_reference.parse("")
1034
- assert_instance_of Result::Fail, result
1035
- end
1036
-
1037
-
1038
-
1039
- end