openbel-api 0.4.0-java
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.
- checksums.yaml +7 -0
- data/.gemspec +65 -0
- data/CHANGELOG.md +22 -0
- data/INSTALL.md +19 -0
- data/INSTALL_RUBY.md +107 -0
- data/LICENSE +191 -0
- data/README.md +208 -0
- data/app/openbel/api/app.rb +83 -0
- data/app/openbel/api/config.rb +45 -0
- data/app/openbel/api/config.ru +3 -0
- data/app/openbel/api/helpers/pager.rb +109 -0
- data/app/openbel/api/middleware/auth.rb +112 -0
- data/app/openbel/api/resources/adapters/basic_json.rb +52 -0
- data/app/openbel/api/resources/annotation.rb +141 -0
- data/app/openbel/api/resources/base.rb +16 -0
- data/app/openbel/api/resources/completion.rb +89 -0
- data/app/openbel/api/resources/evidence.rb +115 -0
- data/app/openbel/api/resources/evidence_transform.rb +143 -0
- data/app/openbel/api/resources/function.rb +98 -0
- data/app/openbel/api/resources/match_result.rb +79 -0
- data/app/openbel/api/resources/namespace.rb +174 -0
- data/app/openbel/api/routes/annotations.rb +168 -0
- data/app/openbel/api/routes/authenticate.rb +108 -0
- data/app/openbel/api/routes/base.rb +326 -0
- data/app/openbel/api/routes/datasets.rb +519 -0
- data/app/openbel/api/routes/evidence.rb +330 -0
- data/app/openbel/api/routes/expressions.rb +560 -0
- data/app/openbel/api/routes/functions.rb +41 -0
- data/app/openbel/api/routes/namespaces.rb +382 -0
- data/app/openbel/api/routes/root.rb +39 -0
- data/app/openbel/api/schemas.rb +34 -0
- data/app/openbel/api/schemas/annotation_collection.schema.json +20 -0
- data/app/openbel/api/schemas/annotation_resource.schema.json +36 -0
- data/app/openbel/api/schemas/annotation_value_collection.schema.json +21 -0
- data/app/openbel/api/schemas/annotation_value_resource.schema.json +35 -0
- data/app/openbel/api/schemas/completion_collection.schema.json +21 -0
- data/app/openbel/api/schemas/completion_resource.schema.json +146 -0
- data/app/openbel/api/schemas/evidence.schema.json +198 -0
- data/app/openbel/api/schemas/evidence_collection.schema.json +98 -0
- data/app/openbel/api/schemas/evidence_resource.schema.json +29 -0
- data/app/openbel/api/schemas/namespace_value_collection.schema.json +21 -0
- data/app/openbel/api/schemas/namespace_value_resource.schema.json +43 -0
- data/app/openbel/api/util.rb +11 -0
- data/bin/openbel-api +78 -0
- data/bin/openbel-config +46 -0
- data/config/async_evidence.rb +12 -0
- data/config/async_jena.rb +14 -0
- data/config/config.yml +31 -0
- data/config/server_config.rb +184 -0
- data/lib/openbel/api/cache/cache.rb +30 -0
- data/lib/openbel/api/config/config.rb +33 -0
- data/lib/openbel/api/evidence/api.rb +39 -0
- data/lib/openbel/api/evidence/facet_api.rb +18 -0
- data/lib/openbel/api/evidence/facet_filter.rb +83 -0
- data/lib/openbel/api/evidence/mongo.rb +247 -0
- data/lib/openbel/api/evidence/mongo_facet.rb +105 -0
- data/lib/openbel/api/helpers/dependency_graph.rb +52 -0
- data/lib/openbel/api/model/rdf_resource.rb +74 -0
- data/lib/openbel/api/plugin/cache/kyotocabinet.rb +85 -0
- data/lib/openbel/api/plugin/configure_plugins.rb +97 -0
- data/lib/openbel/api/plugin/evidence/evidence.rb +58 -0
- data/lib/openbel/api/plugin/plugin.rb +99 -0
- data/lib/openbel/api/plugin/plugin_manager.rb +20 -0
- data/lib/openbel/api/plugin/plugin_repository.rb +60 -0
- data/lib/openbel/api/storage/cache_proxy.rb +74 -0
- data/lib/openbel/api/storage/triple_storage.rb +43 -0
- metadata +379 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'multi_json'
|
3
|
+
require 'json_schema'
|
4
|
+
|
5
|
+
module OpenBEL
|
6
|
+
module Schemas
|
7
|
+
|
8
|
+
COMPILED_SCHEMAS = {}
|
9
|
+
SCHEMA_DIR = File.join(File.expand_path(File.dirname(__FILE__)), 'schemas')
|
10
|
+
SUFFIX = ".schema.json"
|
11
|
+
|
12
|
+
def validate(data, type)
|
13
|
+
_get_schema(type).validate(data)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def _get_schema(type)
|
19
|
+
schemas = @@compiled ||= {}
|
20
|
+
schemas[type] ||= _compile_schema(type)
|
21
|
+
end
|
22
|
+
|
23
|
+
def _compile_schema(type)
|
24
|
+
path = (Pathname(SCHEMA_DIR) + "#{type}#{SUFFIX}").to_s
|
25
|
+
if File.exists? path
|
26
|
+
schema_data = MultiJson.load File.read(path)
|
27
|
+
JsonSchema.parse!(schema_data)
|
28
|
+
else
|
29
|
+
fail IOError.new "No schema file for type: #{type} at path: #{path}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"description": "DESCRIBE ANNOTATION COLLECTION",
|
4
|
+
"type": "object",
|
5
|
+
"additionalProperties": false,
|
6
|
+
"required": [
|
7
|
+
"annotation_collection"
|
8
|
+
],
|
9
|
+
"properties": {
|
10
|
+
"annotation_collection": {
|
11
|
+
"type": "array",
|
12
|
+
"minItems": 0,
|
13
|
+
"title": "",
|
14
|
+
"description": "",
|
15
|
+
"items": {
|
16
|
+
"$ref":"http://next.belframework.org/schemas/annotation_resource.schema.json"
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"title": "Annotation",
|
4
|
+
"description": "A vocabulary of terms for describing evidence resources.",
|
5
|
+
"type": "object",
|
6
|
+
"additionalProperties": false,
|
7
|
+
"required": [
|
8
|
+
"annotation"
|
9
|
+
],
|
10
|
+
"properties": {
|
11
|
+
"annotation": {
|
12
|
+
"type": "object",
|
13
|
+
"additionalProperties": false,
|
14
|
+
"required": [
|
15
|
+
"rdf_uri",
|
16
|
+
"name",
|
17
|
+
"prefix",
|
18
|
+
"domain"
|
19
|
+
],
|
20
|
+
"properties": {
|
21
|
+
"rdf_uri": {
|
22
|
+
"type": "string"
|
23
|
+
},
|
24
|
+
"name": {
|
25
|
+
"type": "string"
|
26
|
+
},
|
27
|
+
"prefix": {
|
28
|
+
"type": "string"
|
29
|
+
},
|
30
|
+
"domain": {
|
31
|
+
"type": "string"
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"title": "Annotation Value Collection",
|
4
|
+
"description": "A collection of annotation value resources.",
|
5
|
+
"type": "object",
|
6
|
+
"additionalProperties": false,
|
7
|
+
"required": [
|
8
|
+
"annotation_value_collection"
|
9
|
+
],
|
10
|
+
"properties": {
|
11
|
+
"annotation_value_collection": {
|
12
|
+
"type": "array",
|
13
|
+
"minItems": 0,
|
14
|
+
"title": "",
|
15
|
+
"description": "",
|
16
|
+
"items": {
|
17
|
+
"$ref":"http://next.belframework.org/schemas/annotation_value_resource.schema.json"
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"title": "Annotation Value Resource",
|
4
|
+
"description": "A single annotation value within a BEL Annotation.",
|
5
|
+
"type": "object",
|
6
|
+
"additionalProperties": false,
|
7
|
+
"required": [
|
8
|
+
"annotation_value"
|
9
|
+
],
|
10
|
+
"properties": {
|
11
|
+
"annotation_value": {
|
12
|
+
"type": "object",
|
13
|
+
"additionalProperties": false,
|
14
|
+
"required": [
|
15
|
+
"type",
|
16
|
+
"identifier",
|
17
|
+
"name"
|
18
|
+
],
|
19
|
+
"properties": {
|
20
|
+
"type": {
|
21
|
+
"type": "string"
|
22
|
+
},
|
23
|
+
"identifier": {
|
24
|
+
"type": "string"
|
25
|
+
},
|
26
|
+
"name": {
|
27
|
+
"type": "string"
|
28
|
+
},
|
29
|
+
"match_text": {
|
30
|
+
"type": "string"
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"title": "Completion Collection",
|
4
|
+
"description": "A collection of BEL expression completions.",
|
5
|
+
"type": "object",
|
6
|
+
"additionalProperties": false,
|
7
|
+
"required": [
|
8
|
+
"completion_collection"
|
9
|
+
],
|
10
|
+
"properties": {
|
11
|
+
"completion_collection": {
|
12
|
+
"type": "array",
|
13
|
+
"minItems": 0,
|
14
|
+
"title": "",
|
15
|
+
"description": "",
|
16
|
+
"items": {
|
17
|
+
"$ref":"http://next.belframework.org/schemas/completion_resource.schema.json#/properties/completion"
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,146 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"title": "Completion Resource",
|
4
|
+
"description": "A completion of a BEL expression.",
|
5
|
+
"type": "object",
|
6
|
+
"additionalProperties": false,
|
7
|
+
"required": [
|
8
|
+
"completion"
|
9
|
+
],
|
10
|
+
"properties": {
|
11
|
+
"completion": {
|
12
|
+
"type": "object",
|
13
|
+
"additionalProperties": false,
|
14
|
+
"required": [
|
15
|
+
"type",
|
16
|
+
"label",
|
17
|
+
"value",
|
18
|
+
"highlight",
|
19
|
+
"actions"
|
20
|
+
],
|
21
|
+
"properties": {
|
22
|
+
"type": {
|
23
|
+
"enum": [
|
24
|
+
"function",
|
25
|
+
"namespace_prefix",
|
26
|
+
"namespace_value"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
"label": {
|
30
|
+
"type": "string"
|
31
|
+
},
|
32
|
+
"value": {
|
33
|
+
"type": "string"
|
34
|
+
},
|
35
|
+
"highlight": {
|
36
|
+
"oneOf": [
|
37
|
+
{
|
38
|
+
"type": "null"
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"type": "object",
|
42
|
+
"required": [
|
43
|
+
"start_position",
|
44
|
+
"end_position",
|
45
|
+
"range_type"
|
46
|
+
],
|
47
|
+
"properties": {
|
48
|
+
"start_position": {
|
49
|
+
"type": "integer"
|
50
|
+
},
|
51
|
+
"end_position": {
|
52
|
+
"type": "integer"
|
53
|
+
},
|
54
|
+
"range_type": {
|
55
|
+
"enum": [
|
56
|
+
"exclusive",
|
57
|
+
"inclusive"
|
58
|
+
]
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
]
|
63
|
+
},
|
64
|
+
"actions": {
|
65
|
+
"type": "array",
|
66
|
+
"items": {
|
67
|
+
"oneOf": [
|
68
|
+
{
|
69
|
+
"type": "object",
|
70
|
+
"required": [
|
71
|
+
"delete"
|
72
|
+
],
|
73
|
+
"properties": {
|
74
|
+
"delete": {
|
75
|
+
"type": "object",
|
76
|
+
"required": [
|
77
|
+
"start_position",
|
78
|
+
"end_position",
|
79
|
+
"range_type"
|
80
|
+
],
|
81
|
+
"properties": {
|
82
|
+
"start_position": {
|
83
|
+
"type": "integer"
|
84
|
+
},
|
85
|
+
"end_position": {
|
86
|
+
"type": "integer"
|
87
|
+
},
|
88
|
+
"range_type": {
|
89
|
+
"enum": [
|
90
|
+
"exclusive",
|
91
|
+
"inclusive"
|
92
|
+
]
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
},
|
98
|
+
{
|
99
|
+
"type": "object",
|
100
|
+
"required": [
|
101
|
+
"insert"
|
102
|
+
],
|
103
|
+
"properties": {
|
104
|
+
"insert": {
|
105
|
+
"type": "object",
|
106
|
+
"required": [
|
107
|
+
"position",
|
108
|
+
"value"
|
109
|
+
],
|
110
|
+
"properties": {
|
111
|
+
"position": {
|
112
|
+
"type": "integer"
|
113
|
+
},
|
114
|
+
"value": {
|
115
|
+
"type": "string"
|
116
|
+
}
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"type": "object",
|
123
|
+
"required": [
|
124
|
+
"move_cursor"
|
125
|
+
],
|
126
|
+
"properties": {
|
127
|
+
"move_cursor": {
|
128
|
+
"type": "object",
|
129
|
+
"required": [
|
130
|
+
"position"
|
131
|
+
],
|
132
|
+
"properties": {
|
133
|
+
"position": {
|
134
|
+
"type": "integer"
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
]
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
@@ -0,0 +1,198 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema",
|
3
|
+
"description": "DESCRIBE EVIDENCE",
|
4
|
+
"type": "object",
|
5
|
+
"additionalProperties": false,
|
6
|
+
"required": ["evidence"],
|
7
|
+
"properties": {
|
8
|
+
"evidence": {
|
9
|
+
"type": "object",
|
10
|
+
"additionalProperties": false,
|
11
|
+
"required": ["bel_statement", "citation"],
|
12
|
+
"properties": {
|
13
|
+
"bel_statement": {
|
14
|
+
"type": "string",
|
15
|
+
"title": "BEL Statement",
|
16
|
+
"description": "A BEL Statement is an expression that represents knowledge of the existence of biological entities and relationships between them that are known to be observed within a particular context, based on some source of prior knowledge such as a scientific publication or newly generated experimental data."
|
17
|
+
},
|
18
|
+
"citation": {
|
19
|
+
"type": "object",
|
20
|
+
"title": "Citation",
|
21
|
+
"description": "The citation specifies the written source where the biological knowledge was referenced.",
|
22
|
+
"required": ["type", "id"],
|
23
|
+
"properties": {
|
24
|
+
"type": {
|
25
|
+
"type": "string",
|
26
|
+
"enum": ["PubMed", "Book", "Journal", "Online Resource", "Other"],
|
27
|
+
"title": "Citation Type",
|
28
|
+
"description": "The citation type of the reference."
|
29
|
+
},
|
30
|
+
"id": {
|
31
|
+
"type": ["string", "number"],
|
32
|
+
"title": "Citation ID",
|
33
|
+
"description": "The citation identifier (PubMed ID, ISBN, DOI, URL) of the reference."
|
34
|
+
},
|
35
|
+
"name": {
|
36
|
+
"type": ["string", "null"],
|
37
|
+
"title": "Citation Name",
|
38
|
+
"description": "The citation name of the reference."
|
39
|
+
},
|
40
|
+
"date": {
|
41
|
+
"type": ["string", "null"],
|
42
|
+
"title": "Citation Date",
|
43
|
+
"description": "The citation date of the reference."
|
44
|
+
},
|
45
|
+
"authors": {
|
46
|
+
"type": ["array", "null"],
|
47
|
+
"title": "Citation Authors",
|
48
|
+
"description": "The citation authors of the reference.",
|
49
|
+
"items": {
|
50
|
+
"type": "string",
|
51
|
+
"minItems": 0
|
52
|
+
}
|
53
|
+
},
|
54
|
+
"comment": {
|
55
|
+
"type": ["string", "null"],
|
56
|
+
"title": "Citation Comment",
|
57
|
+
"description": "The citation comment of the reference."
|
58
|
+
}
|
59
|
+
}
|
60
|
+
},
|
61
|
+
"experiment_context": {
|
62
|
+
"type": ["array", "null"],
|
63
|
+
"title": "Experiment Context",
|
64
|
+
"description": "An experiment context specifies the experiment's parameters where this interaction was observed.",
|
65
|
+
"items": {
|
66
|
+
"type": "object",
|
67
|
+
"required": ["name", "value"],
|
68
|
+
"properties": {
|
69
|
+
"name": {
|
70
|
+
"type": "string",
|
71
|
+
"title": "Annotation Type",
|
72
|
+
"description": "Annotation type listing - sourced from the BEL Annotation resource names"
|
73
|
+
},
|
74
|
+
"value": {
|
75
|
+
"type": ["string", "number", "boolean", "array"],
|
76
|
+
"title": "Annotations",
|
77
|
+
"description": "Annotations such as Homo sapiens, cancer, epithelial tissue sourced from the BEL Annotation resources",
|
78
|
+
"items": {
|
79
|
+
"type": ["string", "number", "boolean"]
|
80
|
+
}
|
81
|
+
},
|
82
|
+
"uri": {
|
83
|
+
"type": "string",
|
84
|
+
"title": "Annotation URI",
|
85
|
+
"description": "URI for Annotation",
|
86
|
+
"format": "uri",
|
87
|
+
"items": {
|
88
|
+
"type": "string",
|
89
|
+
"format": "uri"
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
},
|
95
|
+
"summary_text": {
|
96
|
+
"type": ["string", "null"],
|
97
|
+
"title": "Summary Text",
|
98
|
+
"description": "Abstract from source text to provide support for this evidence"
|
99
|
+
},
|
100
|
+
"references": {
|
101
|
+
"type": ["object", "null"],
|
102
|
+
"title": "References",
|
103
|
+
"description": "The references section identifies annotation and namespace URIs.",
|
104
|
+
"properties": {
|
105
|
+
"annotations": {
|
106
|
+
"type": ["array", "null"],
|
107
|
+
"title": "Annotation references",
|
108
|
+
"description": "References to annotation resources.",
|
109
|
+
"item": {
|
110
|
+
"type": "object",
|
111
|
+
"properties": {
|
112
|
+
"keyword": {
|
113
|
+
"type": "string",
|
114
|
+
"title": "Keyword",
|
115
|
+
"description": "Keyword that identifies this annotation resource, but only in the context of this Evidence."
|
116
|
+
},
|
117
|
+
"uri": {
|
118
|
+
"type": "string",
|
119
|
+
"format": "uri",
|
120
|
+
"title": "URI",
|
121
|
+
"description": "URI that identifies this annotation resource."
|
122
|
+
}
|
123
|
+
},
|
124
|
+
"required": ["keyword", "uri"]
|
125
|
+
}
|
126
|
+
},
|
127
|
+
"namespaces": {
|
128
|
+
"type": ["array", "null"],
|
129
|
+
"title": "Namespace references",
|
130
|
+
"description": "References to namespace resources.",
|
131
|
+
"item": {
|
132
|
+
"type": "object",
|
133
|
+
"properties": {
|
134
|
+
"keyword": {
|
135
|
+
"type": "string",
|
136
|
+
"title": "Keyword",
|
137
|
+
"description": "Keyword that identifies this namespace resource, but only in the context of this Evidence."
|
138
|
+
},
|
139
|
+
"uri": {
|
140
|
+
"type": "string",
|
141
|
+
"format": "uri",
|
142
|
+
"title": "URI",
|
143
|
+
"description": "URI that identifies this namespace resource."
|
144
|
+
}
|
145
|
+
},
|
146
|
+
"required": ["keyword", "uri"]
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
150
|
+
},
|
151
|
+
"metadata": {
|
152
|
+
"type": ["array", "null"],
|
153
|
+
"title": "Evidence resource metadata",
|
154
|
+
"description": "Metadata that describes the evidence resource.",
|
155
|
+
"items": {
|
156
|
+
"oneOf": [
|
157
|
+
{
|
158
|
+
"type": "object",
|
159
|
+
"required": ["name", "value"],
|
160
|
+
"properties": {
|
161
|
+
"name": {
|
162
|
+
"type": "string",
|
163
|
+
"title": "Name",
|
164
|
+
"description": "The name of this metadata property."
|
165
|
+
},
|
166
|
+
"value": {
|
167
|
+
"type": ["array", "boolean", "number", "object", "string"],
|
168
|
+
"title": "Value",
|
169
|
+
"description": "The value of this metadata property.",
|
170
|
+
"items": {
|
171
|
+
"type": ["array", "boolean", "integer", "number", "null", "object", "string"]
|
172
|
+
}
|
173
|
+
}
|
174
|
+
}
|
175
|
+
},
|
176
|
+
{
|
177
|
+
"type": "object",
|
178
|
+
"required": ["uri"],
|
179
|
+
"title": "Annotation URI(s)",
|
180
|
+
"description": "URI(s) for Annotations",
|
181
|
+
"properties": {
|
182
|
+
"uri": {
|
183
|
+
"type": ["string", "array"],
|
184
|
+
"format": "uri",
|
185
|
+
"items": {
|
186
|
+
"type": "string",
|
187
|
+
"format": "uri"
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
}
|
192
|
+
]
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|