bel 0.2.1 → 0.3.0.beta1

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/lib/bel/namespace.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'open-uri'
2
- require_relative './language'
2
+
3
+ require_relative '../features'
4
+ require_relative './language'
3
5
 
4
6
  class String
5
7
  def split_by_last(char=" ")
@@ -11,7 +13,102 @@ end
11
13
  module BEL
12
14
  module Namespace
13
15
 
14
- NAMESPACE_HASH = {
16
+ LATEST_PREFIX = 'http://resource.belframework.org/belframework/latest-release/'
17
+ DEFAULT_URI = 'http://www.openbel.org/bel/namespace/'
18
+
19
+ NAMESPACE_LATEST = {
20
+ AFFX: [
21
+ LATEST_PREFIX + 'namespace/affy-probeset-ids.belns',
22
+ 'http://www.openbel.org/bel/namespace/affy-probeset'
23
+ ],
24
+ CHEBI: [
25
+ LATEST_PREFIX + 'namespace/chebi.belns',
26
+ 'http://www.openbel.org/bel/namespace/chebi'
27
+ ],
28
+ CHEBIID: [
29
+ LATEST_PREFIX + 'namespace/chebi-ids.belns',
30
+ 'http://www.openbel.org/bel/namespace/chebi'
31
+ ],
32
+ DO: [
33
+ LATEST_PREFIX + 'namespace/disease-ontology.belns',
34
+ 'http://www.openbel.org/bel/namespace/disease-ontology'
35
+ ],
36
+ DOID: [
37
+ LATEST_PREFIX + 'namespace/disease-ontology-ids.belns',
38
+ 'http://www.openbel.org/bel/namespace/disease-ontology'
39
+ ],
40
+ EGID: [
41
+ LATEST_PREFIX + 'namespace/entrez-gene-ids.belns',
42
+ 'http://www.openbel.org/bel/namespace/entrez-gene'
43
+ ],
44
+ GOBP: [
45
+ LATEST_PREFIX + 'namespace/go-biological-process.belns',
46
+ 'http://www.openbel.org/bel/namespace/go-biological-processes'
47
+ ],
48
+ GOBPID: [
49
+ LATEST_PREFIX + 'namespace/go-biological-process-ids.belns',
50
+ 'http://www.openbel.org/bel/namespace/go'
51
+ ],
52
+ GOCC: [
53
+ LATEST_PREFIX + 'namespace/go-cellular-component.belns',
54
+ 'http://www.openbel.org/bel/namespace/go-cellular-component'
55
+ ],
56
+ GOCCID: [
57
+ LATEST_PREFIX + 'namespace/go-cellular-component-ids.belns',
58
+ 'http://www.openbel.org/bel/namespace/go-cellular-component'
59
+ ],
60
+ HGNC: [
61
+ LATEST_PREFIX + 'namespace/hgnc-human-genes.belns',
62
+ 'http://www.openbel.org/bel/namespace/hgnc-human-genes'
63
+ ],
64
+ MESHCS: [
65
+ LATEST_PREFIX + 'namespace/mesh-cellular-structures.belns',
66
+ 'http://www.openbel.org/bel/namespace/mesh-cellular-structures'
67
+ ],
68
+ MESHD: [
69
+ LATEST_PREFIX + 'namespace/mesh-diseases.belns',
70
+ 'http://www.openbel.org/bel/namespace/mesh-diseases',
71
+ ],
72
+ MESHPP: [
73
+ LATEST_PREFIX + 'namespace/mesh-processes.belns',
74
+ 'http://www.openbel.org/bel/namespace/mesh-processes'
75
+ ],
76
+ MGI: [
77
+ LATEST_PREFIX + 'namespace/mgi-mouse-genes.belns',
78
+ 'http://www.openbel.org/bel/namespace/mgi-mouse-genes'
79
+ ],
80
+ RGD: [
81
+ LATEST_PREFIX + 'namespace/rgd-rat-genes.belns',
82
+ 'http://www.openbel.org/bel/namespace/rgd-rat-genes'
83
+ ],
84
+ SCOMP: [
85
+ LATEST_PREFIX + 'namespace/selventa-named-complexes.belns',
86
+ 'http://www.openbel.org/bel/namespace/selventa-named-complexes'
87
+ ],
88
+ SCHEM: [
89
+ LATEST_PREFIX + 'namespace/selventa-legacy-chemicals.belns',
90
+ 'http://www.openbel.org/bel/namespace/selventa-legacy-chemicals'
91
+ ],
92
+ SDIS: [
93
+ LATEST_PREFIX + 'namespace/selventa-legacy-diseases.belns',
94
+ 'http://www.openbel.org/bel/namespace/selventa-legacy-diseases'
95
+ ],
96
+ SFAM: [
97
+ LATEST_PREFIX + 'namespace/selventa-protein-families.belns',
98
+ 'http://www.openbel.org/bel/namespace/selventa-protein-families'
99
+ ],
100
+ SP: [
101
+ LATEST_PREFIX + 'namespace/swissprot.belns',
102
+ 'http://www.openbel.org/bel/namespace/swissprot'
103
+ ],
104
+ SPAC: [
105
+ LATEST_PREFIX + 'namespace/swissprot-ids.belns',
106
+ 'http://www.openbel.org/bel/namespace/swissprot-ids'
107
+ ]
108
+ }
109
+
110
+ # XXX 1.0 namespaces without rdf support
111
+ NAMESPACE_BELNS = {
15
112
  HGU95AV2: 'http://resource.belframework.org/belframework/1.0/namespace/affy-hg-u95av2.belns',
16
113
  HGU133P2: 'http://resource.belframework.org/belframework/1.0/namespace/affy-hg-u133-plus2.belns',
17
114
  HGU133AB: 'http://resource.belframework.org/belframework/1.0/namespace/affy-hg-u133ab.belns',
@@ -46,61 +143,180 @@ module BEL
46
143
  SP: 'http://resource.belframework.org/belframework/1.0/namespace/swissprot-entry-names.belns'
47
144
  }
48
145
 
146
+ class ResourceIndex
147
+ include Enumerable
148
+
149
+ class << self
150
+ def openbel_published_index(version)
151
+ clean = version.to_s.strip
152
+ ResourceIndex.new("http://resource.belframework.org/belframework/#{clean}/index.xml")
153
+ end
154
+ end
155
+
156
+ attr_writer :namespaces
157
+ attr_writer :annotations
158
+
159
+ def initialize(index, namespaces = [], annotations = [])
160
+ @index = index
161
+ @namespaces = namespaces
162
+ @annotations = annotations
163
+ @loaded = false
164
+ end
165
+
166
+ def namespaces
167
+ read_index if not @loaded
168
+ @namespaces
169
+ end
170
+
171
+ def annotations
172
+ read_index if not @loaded
173
+ @annotations
174
+ end
175
+
176
+ def each
177
+ read_index if not @loaded
178
+ @namespaces.each { |x| yield x }
179
+ @annotations.each { |x| yield x }
180
+ end
181
+
182
+ def each_namespace
183
+ read_index if not @loaded
184
+ @namespaces.each { |x| yield x }
185
+ end
186
+
187
+ def each_annotation
188
+ read_index if not @loaded
189
+ @annotations.each { |x| yield x }
190
+ end
191
+
192
+ def to_bel
193
+ map { |x| x.to_bel }
194
+ end
195
+
196
+ private
197
+
198
+ def read_index
199
+ return if not @index or @index.empty?
200
+
201
+ data = BEL::read_all(@index)
202
+ @namespaces += data.
203
+ scan(%r{<(idx:)?namespace (idx:)?resourceLocation="(.*)"}).
204
+ map { |matches|
205
+ url = matches[2]
206
+ prefix = BEL::read_lines(url).find { |line|
207
+ line.start_with? 'Keyword'
208
+ }.split('=').map(&:strip)[1].to_sym
209
+ NamespaceDefinition.new(prefix, url)
210
+ }
211
+ @annotations += data.
212
+ scan(%r{<(idx:)?annotationdefinition (idx:)?resourceLocation="(.*)"}).
213
+ map { |matches|
214
+ url = matches[2]
215
+ prefix = BEL::read_lines(url).find { |line|
216
+ line.start_with? 'Keyword'
217
+ }.split('=').map(&:strip)[1].to_sym
218
+ BEL::Language::AnnotationDefinition.new(:url, prefix, url)
219
+ }
220
+
221
+ @loaded = true
222
+ end
223
+ end
224
+
49
225
  class NamespaceDefinition
50
226
  include Enumerable
51
227
 
228
+ attr_reader :prefix
52
229
  attr_reader :url
53
- attr_reader :values
230
+ attr_reader :rdf_uri
54
231
 
55
- def initialize(prefix, url)
232
+ def initialize(prefix, url, rdf_uri = DEFAULT_URI)
56
233
  @prefix = prefix
57
234
  @url = url
235
+ @rdf_uri = rdf_uri
58
236
  @values = nil
59
237
  end
60
238
 
239
+ def values
240
+ unless @values
241
+ reload(@url)
242
+ end
243
+ @values
244
+ end
245
+
61
246
  def [](value)
62
247
  return nil unless value
63
-
64
248
  reload(@url) if not @values
65
249
  sym = value.to_sym
66
- Language::Parameter.new(@prefix, sym,
67
- @values[sym]) if @values.key?(sym)
250
+ encoding = @values[sym] || :""
251
+ Language::Parameter.new(self, sym, encoding)
68
252
  end
69
253
 
70
254
  def each &block
71
255
  reload(@url) if not @values
72
- ns = @prefix.to_sym
73
256
  @values.each do |val, enc|
74
257
  if block_given?
75
- block.call(Language::Parameter.new(ns, val, enc))
258
+ block.call(Language::Parameter.new(self, val, enc))
76
259
  else
77
- yield Language::Parameter.new(ns, val, enc)
260
+ yield Language::Parameter.new(self, val, enc)
78
261
  end
79
262
  end
80
263
  end
81
264
 
265
+ def hash
266
+ [@prefix, @url].hash
267
+ end
268
+
269
+ def ==(other)
270
+ return false if other == nil
271
+ @prefix == other.prefix && @url == other.url
272
+ end
273
+
274
+ alias_method :eql?, :'=='
275
+
276
+ def to_s
277
+ @prefix.to_s
278
+ end
279
+
280
+ def to_bel
281
+ %Q{DEFINE NAMESPACE #{@prefix} AS URL "#{@url}"}
282
+ end
283
+
82
284
  private
83
285
  # the backdoor
84
286
  def reload(url)
85
287
  @values = {}
86
- open(url).
87
- drop_while { |i| not i.start_with? "[Values]" }.
88
- drop(1).
89
- each do |s|
90
- val_enc = s.strip!.split_by_last('|').map(&:to_sym)
91
- @values[val_enc[0]] = val_enc[1]
92
- end
288
+ BEL::read_lines(url).
289
+ drop_while { |i| not i.start_with? "[Values]" }.
290
+ drop(1).
291
+ each do |s|
292
+ val_enc = s.strip!.split_by_last('|').map(&:to_sym)
293
+ @values[val_enc[0]] = val_enc[1]
294
+ end
295
+ end
296
+ end
297
+
298
+ if BEL::Features.rdf_support?
299
+ require_relative 'rdf'
300
+
301
+ class NamespaceDefinition
302
+ def to_uri
303
+ @rdf_uri
304
+ end
305
+
306
+ def to_rdf_vocabulary
307
+ RUBYRDF::Vocabulary.new("#{@rdf_uri}/")
308
+ end
93
309
  end
94
310
  end
95
311
 
96
312
  # create classes for each standard prefix
97
- DEFAULT_NAMESPACES = [
98
- NAMESPACE_HASH.collect do |prefix, default_url|
99
- ns_definition = NamespaceDefinition.new(prefix, default_url)
313
+ DEFAULT_NAMESPACES =
314
+ NAMESPACE_LATEST.collect do |prefix, values|
315
+ rdf_uri = NAMESPACE_LATEST[prefix][1] || DEFAULT_URI
316
+ ns_definition = NamespaceDefinition.new(prefix, values[0], rdf_uri)
100
317
  Namespace.const_set(prefix, ns_definition)
101
318
  ns_definition
102
319
  end
103
- ]
104
320
  end
105
321
  end
106
322
  # vim: ts=2 sw=2:
@@ -0,0 +1,29 @@
1
+ module BEL
2
+ module Quoting
3
+
4
+ NonWordMatcher = Regexp.compile(/[^0-9a-zA-Z_]/)
5
+ KeywordMatcher = Regexp.compile(/^(SET|DEFINE|a|g|p|r|m)$/)
6
+
7
+ def ensure_quotes identifier
8
+ return "" unless identifier
9
+ identifier.to_s.gsub! '"', '\"'
10
+ if quotes_required? identifier
11
+ %Q{"#{identifier}"}
12
+ else
13
+ identifier
14
+ end
15
+ end
16
+
17
+ def always_quote identifier
18
+ return "" unless identifier
19
+ identifier.to_s.gsub! '"', '\"'
20
+ %Q("#{identifier}")
21
+ end
22
+
23
+ def quotes_required? identifier
24
+ [NonWordMatcher, KeywordMatcher].any? { |m| m.match identifier }
25
+ end
26
+ end
27
+ end
28
+ # vim: ts=2 sw=2:
29
+ # encoding: utf-8
data/lib/bel/rdf.rb ADDED
@@ -0,0 +1,314 @@
1
+ # vim: ts=2 sw=2:
2
+ # Defines the RDF vocabulary for BEL structures.
3
+
4
+ unless BEL::Features.rdf_support?
5
+ # rdf and addressable are required
6
+ raise RuntimeError, %Q{BEL::RDF is not supported.
7
+ The rdf and addressable gems are required.
8
+
9
+ Install the gems:
10
+ gem install rdf
11
+ gem install addressable
12
+ gem install uuid}
13
+ end
14
+
15
+ require 'rdf'
16
+ require 'addressable/uri'
17
+ require 'uuid'
18
+
19
+ # rename rdf module to avoid conflict within BEL::RDF
20
+ RUBYRDF = RDF
21
+
22
+ module BEL
23
+ module RDF
24
+
25
+ # uri prefixes
26
+ BELR = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/')
27
+ BELV = RUBYRDF::Vocabulary.new('http://www.openbel.org/vocabulary/')
28
+ PUBMED = RUBYRDF::Vocabulary.new('http://bio2rdf.org/pubmed:')
29
+ RDF = RUBYRDF
30
+ RDFS = RUBYRDF::RDFS
31
+
32
+ # annotations
33
+ Anatomy = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/anatomy/')
34
+ Cell = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/cell/')
35
+ CellLine = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/cell-line/')
36
+ CellStructure = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/cell-structure/')
37
+ Disease = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/disease/')
38
+ MeSHAnatomy = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/mesh-anatomy/')
39
+ MeSHDisease = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/mesh-diseases/')
40
+ Species = RUBYRDF::Vocabulary.new('http://www.openbel.org/bel/annotation/species-taxonomy-id/')
41
+
42
+ # maps outer function to bel/vocabulary class
43
+ FUNCTION_TYPE = {
44
+ a: BELV.Abundance,
45
+ g: BELV.GeneAbundance,
46
+ p: BELV.ProteinAbundance,
47
+ r: BELV.RNAAbundance,
48
+ m: BELV.microRNAAbundance,
49
+ complex: BELV.ComplexAbundance,
50
+ composite: BELV.CompositeAbundance,
51
+ bp: BELV.BiologicalProcess,
52
+ path: BELV.Pathology,
53
+ rxn: BELV.Reaction,
54
+ tloc: BELV.Translocation,
55
+ sec: BELV.CellSecretion,
56
+ deg: BELV.Degradation,
57
+ cat: BELV.AbundanceActivity,
58
+ chap: BELV.AbundanceActivity,
59
+ gtp: BELV.AbundanceActivity,
60
+ kin: BELV.AbundanceActivity,
61
+ act: BELV.AbundanceActivity,
62
+ pep: BELV.AbundanceActivity,
63
+ phos: BELV.AbundanceActivity,
64
+ ribo: BELV.AbundanceActivity,
65
+ tscript: BELV.AbundanceActivity,
66
+ tport: BELV.AbundanceActivity
67
+ }
68
+
69
+ RELATIONSHIP_TYPE = {
70
+ 'association' => BELV.Association,
71
+ '--' => BELV.Association,
72
+ 'biomarkerFor' => BELV.BiomarkerFor,
73
+ 'causesNoChange' => BELV.CausesNoChange,
74
+ 'decreases' => BELV.Decreases,
75
+ '-|' => BELV.Decreases,
76
+ 'directlyDecreases' => BELV.DirectlyDecreases,
77
+ '=|' => BELV.DirectlyDecreases,
78
+ 'directlyIncreases' => BELV.DirectlyIncreases,
79
+ '=>' => BELV.DirectlyIncreases,
80
+ 'hasComponent' => BELV.HasComponent,
81
+ 'hasMember' => BELV.HasMember,
82
+ 'increases' => BELV.Increases,
83
+ '->' => BELV.Increases,
84
+ 'isA' => BELV.IsA,
85
+ 'negativeCorrelation' => BELV.NegativeCorrelation,
86
+ 'positiveCorrelation' => BELV.PositiveCorrelation,
87
+ 'prognosticBiomarkerFor' => BELV.PrognosticBiomarkerFor,
88
+ 'rateLimitingStepOf' => BELV.RateLimitingStepOf,
89
+ 'subProcessOf' => BELV.SubProcessOf,
90
+ ':>' => BELV.TranscribedTo,
91
+ '>>' => BELV.TranslatedTo,
92
+
93
+ # Supported by schema
94
+ # 'actsIn' => BELV.ActsIn, # (BELV.hasChild)
95
+
96
+ # Unsupported in schema
97
+ #'analogous' => BELV.Analogous,
98
+ #'hasModification' => BELV.HasModification,
99
+ #'hasProduct' => BELV.HasProduct,
100
+ #'hasVariant' => BELV.HasVariant,
101
+ #'includes' => BELV.Includes,
102
+ #'orthologous' => BELV.Orthologous,
103
+ #'reactantIn' => BELV.ReactantIn,
104
+ #'transcribedTo' => BELV.TranscribedTo,
105
+ #'translatedTo' => BELV.TranslatedTo,
106
+ #'translocates' => BELV.Translocates,
107
+
108
+ # Macro statements - TODO needs parser AST translation
109
+ #'hasComponents' => BELV.HasComponents,
110
+ #'hasMembers' => BELV.HasMembers,
111
+ }
112
+
113
+ RELATIONSHIP_CLASSIFICATION = {
114
+ :'association' => BELV.CorrelativeRelationship,
115
+ :'--' => BELV.CorrelativeRelationship,
116
+ :'biomarkerFor' => BELV.BiomarkerFor,
117
+ :'causesNoChange' => BELV.CausesNoChange,
118
+ :'decreases' => BELV.Decreases,
119
+ :'-|' => BELV.Decreases,
120
+ :'directlyDecreases' => BELV.DirectlyDecreases,
121
+ :'=|' => BELV.DirectlyDecreases,
122
+ :'directlyIncreases' => BELV.DirectlyIncreases,
123
+ :'=>' => BELV.DirectlyIncreases,
124
+ :'hasComponent' => BELV.HasComponent,
125
+ :'hasMember' => BELV.HasMember,
126
+ :'increases' => BELV.Increases,
127
+ :'->' => BELV.Increases,
128
+ :'isA' => BELV.IsA,
129
+ :'negativeCorrelation' => BELV.NegativeCorrelation,
130
+ :'positiveCorrelation' => BELV.PositiveCorrelation,
131
+ :'prognosticBiomarkerFor' => BELV.PrognosticBiomarkerFor,
132
+ :'rateLimitingStepOf' => BELV.RateLimitingStepOf,
133
+ :'subProcessOf' => BELV.SubProcessOf
134
+ }
135
+
136
+ ACTIVITY_TYPE = {
137
+ cat: BELV.Catalytic,
138
+ chap: BELV.Chaperone,
139
+ gtp: BELV.GtpBound,
140
+ kin: BELV.Kinase,
141
+ act: BELV.Activity,
142
+ pep: BELV.Peptidase,
143
+ phos: BELV.Phosphatase,
144
+ ribo: BELV.Ribosylase,
145
+ tscript: BELV.Transcription,
146
+ tport: BELV.Transport
147
+ }
148
+
149
+ # maps modification types to bel/vocabulary class
150
+ MODIFICATION_TYPE = {
151
+ 'P,S' => BELV.PhosphorylationSerine,
152
+ 'P,T' => BELV.PhosphorylationThreonine,
153
+ 'P,Y' => BELV.PhosphorylationTyrosine,
154
+ 'A' => BELV.Acetylation,
155
+ 'F' => BELV.Farnesylation,
156
+ 'G' => BELV.Glycosylation,
157
+ 'H' => BELV.Hydroxylation,
158
+ 'M' => BELV.Methylation,
159
+ 'P' => BELV.Phosphorylation,
160
+ 'R' => BELV.Ribosylation,
161
+ 'S' => BELV.Sumoylation,
162
+ 'U' => BELV.Ubiquitination
163
+ }
164
+
165
+ # protein variant
166
+ PROTEIN_VARIANT = [:fus, :fusion, :sub, :substitution, :trunc, :truncation]
167
+
168
+ def self.vocabulary_rdf
169
+ [
170
+ # Classes
171
+ # Concept - Annotations
172
+ [BELV.AnnotationConcept, RDF::RDFS.subClassOf, RDF::SKOS.Concept],
173
+ [BELV.AnnotationConceptScheme, RDF::RDFS.subClassOf, RDF::SKOS.ConceptScheme],
174
+ # Concept - Namespaces
175
+ [BELV.AbundanceConcept, RDF::RDFS.subClassOf, BELV.NamespaceConcept],
176
+ [BELV.BiologicalProcessConcept, RDF::RDFS.subClassOf, BELV.NamespaceConcept],
177
+ [BELV.ComplexConcept, RDF::RDFS.subClassOf, BELV.AbundanceConcept],
178
+ [BELV.GeneConcept, RDF::RDFS.subClassOf, BELV.AbundanceConcept],
179
+ [BELV.MicroRNAConcept, RDF::RDFS.subClassOf, BELV.RNAConcept],
180
+ [BELV.NamespaceConceptScheme, RDF::RDFS.subClassOf, RDF::SKOS.ConceptScheme],
181
+ [BELV.NamespaceConcept, RDF::RDFS.subClassOf, RDF::SKOS.Concept],
182
+ [BELV.ProteinConcept, RDF::RDFS.subClassOf, BELV.AbundanceConcept],
183
+ [BELV.RNAConcept, RDF::RDFS.subClassOf, BELV.AbundanceConcept],
184
+ [BELV.PathologyConcept, RDF::RDFS.subClassOf, BELV.BiologicalProcessConcept],
185
+ # BEL Language
186
+ [BELV.Abundance, RDF.type, RDF::RDFS.Class],
187
+ [BELV.Activity, RDF.type, RDF::RDFS.Class],
188
+ [BELV.Evidence, RDF.type, RDF::RDFS.Class],
189
+ [BELV.Modification, RDF.type, RDF::RDFS.Class],
190
+ [BELV.Relationship, RDF.type, RDF::RDFS.Class],
191
+ [BELV.Statement, RDF.type, RDF::RDFS.Class],
192
+ [BELV.Term, RDF.type, RDF::RDFS.Class],
193
+ # Relationships
194
+ [BELV.Association, RDF::RDFS.subClassOf, BELV.CorrelativeRelationship],
195
+ [BELV.BiomarkerFor, RDF::RDFS.subClassOf, BELV.Relationship],
196
+ [BELV.CausesNoChange, RDF::RDFS.subClassOf, BELV.CausalRelationship],
197
+ [BELV.CausalRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
198
+ [BELV.CorrelativeRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
199
+ [BELV.Decreases, RDF::RDFS.subClassOf, BELV.CausalRelationship],
200
+ [BELV.Decreases, RDF::RDFS.subClassOf, BELV.NegativeRelationship],
201
+ [BELV.DirectlyDecreases, RDF::RDFS.subClassOf, BELV.CausalRelationship],
202
+ [BELV.DirectlyDecreases, RDF::RDFS.subClassOf, BELV.NegativeRelationship],
203
+ [BELV.DirectlyDecreases, RDF::RDFS.subClassOf, BELV.DirectRelationship],
204
+ [BELV.DirectlyDecreases, RDF::RDFS.subClassOf, BELV.Decreases],
205
+ [BELV.DirectlyIncreases, RDF::RDFS.subClassOf, BELV.CausalRelationship],
206
+ [BELV.DirectlyIncreases, RDF::RDFS.subClassOf, BELV.PositiveRelationship],
207
+ [BELV.DirectlyIncreases, RDF::RDFS.subClassOf, BELV.DirectRelationship],
208
+ [BELV.DirectlyIncreases, RDF::RDFS.subClassOf, BELV.Increases],
209
+ [BELV.DirectRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
210
+ [BELV.HasComponent, RDF::RDFS.subClassOf, BELV.MembershipRelationship],
211
+ [BELV.HasMember, RDF::RDFS.subClassOf, BELV.MembershipRelationship],
212
+ [BELV.Increases, RDF::RDFS.subClassOf, BELV.CausalRelationship],
213
+ [BELV.Increases, RDF::RDFS.subClassOf, BELV.PositiveRelationship],
214
+ [BELV.IsA, RDF::RDFS.subClassOf, BELV.MembershipRelationship],
215
+ [BELV.MembershipRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
216
+ [BELV.NegativeCorrelation, RDF::RDFS.subClassOf, BELV.CorrelativeRelationship],
217
+ [BELV.NegativeCorrelation, RDF::RDFS.subClassOf, BELV.NegativeRelationship],
218
+ [BELV.NegativeRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
219
+ [BELV.PositiveCorrelation, RDF::RDFS.subClassOf, BELV.CorrelativeRelationship],
220
+ [BELV.PositiveCorrelation, RDF::RDFS.subClassOf, BELV.PositiveRelationship],
221
+ [BELV.PositiveRelationship, RDF::RDFS.subClassOf, BELV.Relationship],
222
+ [BELV.PrognosticBiomarkerFor, RDF::RDFS.subClassOf, BELV.BiomarkerFor],
223
+ [BELV.RateLimitingStepOf, RDF::RDFS.subClassOf, BELV.Increases],
224
+ [BELV.RateLimitingStepOf, RDF::RDFS.subClassOf, BELV.CausalRelationship],
225
+ [BELV.RateLimitingStepOf, RDF::RDFS.subClassOf, BELV.SubProcessOf],
226
+ [BELV.SubProcessOf, RDF::RDFS.subClassOf, BELV.MembershipRelationship],
227
+ # Abundances
228
+ [BELV.AbundanceActivity, RDF::RDFS.subClassOf, BELV.Process],
229
+ [BELV.BiologicalProcess, RDF::RDFS.subClassOf, BELV.Process],
230
+ [BELV.CellSecretion, RDF::RDFS.subClassOf, BELV.Translocation],
231
+ [BELV.ComplexAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
232
+ [BELV.CompositeAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
233
+ [BELV.Degradation, RDF::RDFS.subClassOf, BELV.Transformation],
234
+ [BELV.GeneAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
235
+ [BELV.MicroRNAAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
236
+ [BELV.ModifiedProteinAbundance, RDF::RDFS.subClassOf, BELV.ProteinAbundance],
237
+ [BELV.Pathology, RDF::RDFS.subClassOf, BELV.BiologicalProcess],
238
+ [BELV.Process, RDF.type, RDF::RDFS.Class],
239
+ [BELV.ProteinAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
240
+ [BELV.ProteinVariantAbundance, RDF::RDFS.subClassOf, BELV.ProteinAbundance],
241
+ [BELV.Reaction, RDF::RDFS.subClassOf, BELV.Transformation],
242
+ [BELV.RNAAbundance, RDF::RDFS.subClassOf, BELV.Abundance],
243
+ [BELV.Transformation, RDF::RDFS.subClassOf, BELV.Process],
244
+ [BELV.Translocation, RDF::RDFS.subClassOf, BELV.Transformation],
245
+ # Activities
246
+ [BELV.Activity, RDF::RDFS.subClassOf, BELV.Activity],
247
+ [BELV.Catalytic, RDF::RDFS.subClassOf, BELV.Activity],
248
+ [BELV.Chaperone, RDF::RDFS.subClassOf, BELV.Activity],
249
+ [BELV.GtpBound, RDF::RDFS.subClassOf, BELV.Activity],
250
+ [BELV.Kinase, RDF::RDFS.subClassOf, BELV.Activity],
251
+ [BELV.Peptidase, RDF::RDFS.subClassOf, BELV.Activity],
252
+ [BELV.Phosphatase, RDF::RDFS.subClassOf, BELV.Activity],
253
+ [BELV.Ribosylase, RDF::RDFS.subClassOf, BELV.Activity],
254
+ [BELV.Transcription, RDF::RDFS.subClassOf, BELV.Activity],
255
+ [BELV.Transport, RDF::RDFS.subClassOf, BELV.Activity],
256
+ # Modifications
257
+ [BELV.Acetylation, RDF::RDFS.subClassOf, BELV.Modification],
258
+ [BELV.Farnesylation, RDF::RDFS.subClassOf, BELV.Modification],
259
+ [BELV.Glycosylation, RDF::RDFS.subClassOf, BELV.Modification],
260
+ [BELV.Hydroxylation, RDF::RDFS.subClassOf, BELV.Modification],
261
+ [BELV.Methylation, RDF::RDFS.subClassOf, BELV.Modification],
262
+ [BELV.Phosphorylation, RDF::RDFS.subClassOf, BELV.Modification],
263
+ [BELV.Ribosylation, RDF::RDFS.subClassOf, BELV.Modification],
264
+ [BELV.Sumoylation, RDF::RDFS.subClassOf, BELV.Modification],
265
+ [BELV.Ubiquitination, RDF::RDFS.subClassOf, BELV.Modification],
266
+ [BELV.PhosphorylationSerine, RDF::RDFS.subClassOf, BELV.Phosphorylation],
267
+ [BELV.PhosphorylationTyrosine, RDF::RDFS.subClassOf, BELV.Phosphorylation],
268
+ [BELV.PhosphorylationThreonine, RDF::RDFS.subClassOf, BELV.Phosphorylation],
269
+
270
+ # Properties
271
+ # Term
272
+ [BELV.hasActivityType, RDF.type, RDF.Property],
273
+ [BELV.hasActivityType, RDF::RDFS.range, BELV.Activity],
274
+ [BELV.hasActivityType, RDF::RDFS.domain, BELV.Term],
275
+ [BELV.hasChild, RDF.type, RDF.Property],
276
+ [BELV.hasChild, RDF::RDFS.range, BELV.Term],
277
+ [BELV.hasChild, RDF::RDFS.domain, BELV.Term],
278
+ [BELV.hasConcept, RDF.type, RDF.Property],
279
+ [BELV.hasConcept, RDF::RDFS.range, BELV.NamespaceConcept],
280
+ [BELV.hasConcept, RDF::RDFS.domain, BELV.Term],
281
+ [BELV.hasModificationPosition, RDF.type, RDF.Property],
282
+ [BELV.hasModificationPosition, RDF::RDFS.range, RDF::XSD.integer],
283
+ [BELV.hasModificationPosition, RDF::RDFS.domain, BELV.Term],
284
+ [BELV.hasModificationType, RDF.type, RDF.Property],
285
+ [BELV.hasModificationType, RDF::RDFS.range, BELV.Activity],
286
+ [BELV.hasModificationType, RDF::RDFS.domain, BELV.Term],
287
+ # Statement
288
+ [BELV.hasEvidence, RDF.type, RDF.Property],
289
+ [BELV.hasEvidence, RDF::RDFS.range, BELV.Evidence],
290
+ [BELV.hasEvidence, RDF::RDFS.domain, BELV.Statement],
291
+ [BELV.hasObject, RDF::RDFS.subPropertyOf, BELV.hasChild],
292
+ [BELV.hasObject, RDF::RDFS.range, BELV.Term],
293
+ [BELV.hasObject, RDF::RDFS.domain, BELV.Statement],
294
+ [BELV.hasRelationship, RDF.type, RDF.Property],
295
+ [BELV.hasRelationship, RDF::RDFS.range, BELV.Relationship],
296
+ [BELV.hasRelationship, RDF::RDFS.domain, BELV.Statement],
297
+ [BELV.hasSubject, RDF::RDFS.subPropertyOf, BELV.hasChild],
298
+ [BELV.hasSubject, RDF::RDFS.range, BELV.Term],
299
+ [BELV.hasSubject, RDF::RDFS.domain, BELV.Statement],
300
+ # Evidence
301
+ [BELV.hasAnnotation, RDF.type, RDF.Property],
302
+ [BELV.hasAnnotation, RDF::RDFS.range, BELV.AnnotationConcept],
303
+ [BELV.hasAnnotation, RDF::RDFS.domain, BELV.Evidence],
304
+ [BELV.hasCitation, RDF.type, RDF.Property],
305
+ [BELV.hasCitation, RDF::RDFS.domain, BELV.Evidence],
306
+ [BELV.hasEvidenceText, RDF::RDFS.range, RDF::XSD.string],
307
+ [BELV.hasEvidenceText, RDF::RDFS.domain, BELV.Evidence],
308
+ [BELV.hasStatement, RDF.type, RDF.Property],
309
+ [BELV.hasStatement, RDF::RDFS.range, BELV.Statement],
310
+ [BELV.hasStatement, RDF::RDFS.domain, BELV.Evidence]
311
+ ]
312
+ end
313
+ end
314
+ end