This repository has been archived by the owner on Feb 24, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
content.yaml
387 lines (372 loc) · 21.2 KB
/
content.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
content:
- Idea:
Topic: Ideas related to improving hydrus
sub_ideas:
- ideas:
sub_topic: Design a Command line interface for hydrus
Description :
- Although hydrus is primarily a Python-based library right now, most Hydra users may not be familiar with Python to set up servers. It would be great if we could have a CLI for Hydrus where users would just need to pass parameters to set up a server and get it up and running. Also, the current process of server setup is long and needs a lot of prerequisite knowledge to be able to set up. This process needs to be abstracted to make it simpler, and more powerful for a user to have more control over the server. Maybe something similar to Python’s SimpleHTTPServer.
SkillsRequired :
- Python
- Git
- Flask
- Command Line
- Basic knowledge of Semantic Web and Graph Databases
- Ability to learn new technologies quickly
- Ability to write test suites
DifficultyLevel : Easy to Intermediate
RelatedLinks:
- link:
name: hydrus Repo
url: https://github.com/HTTP-APIs/hydrus
- link:
name: hydrus Wiki
url: https://github.com/HTTP-APIs/hydrus/wiki
- link:
name: The Book of hydrus
url: https://gsocchrizandr.wordpress.com/the-book-of-hydrus
- link:
name: Hydra Draft
url: https://www.hydra-cg.com/spec/latest/core
PotentialMentors:
- mentor:
name: Lorenzo Moriondo
url: https://www.linkedin.com/in/lorenzomoriondo/
- mentor:
name: Akshay Dahiya
url: https://www.linkedin.com/in/xadahiya/
- mentor:
name: Chris Andrew
url: https://www.linkedin.com/in/chrizandr/
- mentor:
name: Kristian Koci
url: https://www.linkedin.com/in/kristian-koci-1304a025/
- mentor:
name: Matteo Franchi
url: https://www.linkedin.com/in/matteofranchi
- ideas:
sub_topic: Better API Querying
Description :
- Right now, we only have no mechanism for searching an instance of a class in the Hydra API. Most APIs implement a search feature where the data is queried using a defined syntax. This is more of an issue with Hydra itself as the mechanism for search is not defined in Hydra yet. It would be great if we can have some advance querying functionality like they have in graph databases.
SkillsRequired :
- Flask
- Python
- Sqlalchemy
- PostgreSQL
- Command Line
- Basic knowledge of Semantic Web and Graph Databases
- Basic knowledge of graph querying languages
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: hydrus Database Design
url: https://github.com/HTTP-APIs/hydrus/wiki/Design#dbdesign
- link:
name: Graph querying languages overview
url: https://developer.ibm.com/dwblog/2017/overview-graph-database-query-languages/
- link:
name: The Book of hydrus
url: https://gsocchrizandr.wordpress.com/the-book-of-hydrus
- link:
name: Hydra Draft
url: https://www.hydra-cg.com/spec/latest/core
- ideas:
sub_topic: More User defined Controls for the server
Description :
- There is no way right now to actually change the way the client accesses the server set up by hydrus. Although there is some support for Authentication/Authorization, the actual implementations are very basic and do not offer much security features. There is also no way to control server access or limit/modify user privilege. There may be APIs that provide different levels of access to different users. There are also bottlenecks in place in REST APIs that limit the number of requests each user can make, such control is not given to users. There needs to be a way to add additional controls to the server, that can be built on top of the original Hydrus app.
SkillsRequired :
- Python
- Git
- Flask
- Strong knowledge of Authentication and Authorization in various APIs
- Basic knowledge of Semantic Web
- Ability to learn new technologies quickly
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- ideas:
sub_topic: Support Redis as Graph database
Description:
- Graph based data is everywhere now days, Facebook, Google, Twitter and Pinterest are only a few who've realize the power behind relationship data and are utilizing it to the fullest, as a direct result we see a rise both in interest and variety of graph data solutions.
- RedisGraph is a graph database developed from scratch on top of Redis, using the new Redis Modules API to extend Redis with new commands and capabilities. Its main features include - Simple, fast indexing and querying - Data stored in RAM, using memory-efficient custom data structures - On disk persistence - Tabular result sets - Simple and popular graph query language (Cypher) - Data Filtering, Aggregation and ordering.
- Currently hydrus uses a relational database model to store graph data. It would be interesting to switch to a graph databasee like Redis. We need to implement a multi-layered hexastore to store graph data. This will also help in the implementation of Idea 1.2 - Better API querying.
SkillsRequired :
- Python
- Git
- Flask
- Basic knowledge of graph databases
- Ability to learn new technologies quickly
- Basic knowledge of Semantic Web
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: Redis Graph :- A graph database module for Redis
url: http://redisgraph.io/design/
- link:
name: Paper on representing and querying graphs using an hexastore.
url: https://redis.io/topics/indexes#representing-and-querying-graphs-using-an-hexastore
- ideas:
sub_topic: Open API to Hydra Parser
Description:
- The OpenAPI Specification. (OAS) defines a standard, programming language-agnostic interface description for REST APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic.
- OpenAPI and Hydra do much of the same thing and it would be great to have an interface to convert OpenAPI definitions to Hydra API Documentation.
SkillsRequired :
- Python
- Flask
- HYDRA
- REST APIs
- Ability to learn new technologies quickly
- Basic knowledge of Semantic Web
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: OpenAPI Spec
url: https://github.com/OAI/OpenAPI-Specification
- link:
name: Hydra Draft
url: https://www.hydra-cg.com/spec/latest/core/
- ideas:
sub_topic: Keep hydrus up-to-date with Hydra Specs
Description:
- Hydra Draft Specs (https://github.com/HydraCG/Specifications/issues) are evolving and hydrus needs to follow the most recent updates in the Specs. Code has to be amended to implement new features.
SkillsRequired :
- Python
- Git
- Good Knowledge of Semantic Web and REST paradigm
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Hard
RelatedLinks:
- link:
name: Hydra Draft Specs
url: https://github.com/HydraCG/Specifications/issues
- ideas:
sub_topic: Be Creative
Description:
- Have any ideas of your own? Please feel free to integrate those into your proposal. It'll help your proposal stand out and will increase your chances of being accepted.
SkillsRequired :
- To be decided ...
DifficultyLevel : Interesting
- Idea:
Topic : Ideas Related to Demos using hydrus
sub_ideas:
- ideas:
sub_topic: Implement Satellite and Subsystems Demo
Description:
- We may finally end up implementing the astronomy/satellites vocabulary as thought in the beginning. We need a way to demonstrate how Hydra can be utilized by Satellites to communicate with each other and get information about each of their subsystems and statuses. The OWL Vocabulary for Subsystems is given here ->(https://github.com/chronos-pramantha/RDFvocab). We need to create a Hydra Spec for a demo system that will use these ontologies for a demo.
SkillsRequired :
- Python
- Linux
- Server Management
- At least basic knowledge of DevOps
- HTML, CSS, JS
- Knowledge of any Javascript framework is a plus ( React Js or Vue Js)
- Basic Knowledge of Semantic Web
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Intermediate to Hard
RelatedLinks:
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- link:
name: A sample drone simulation
url: https://github.com/HTTP-APIs/hydra-flock-demo
- ideas:
sub_topic: Improve the flock demo
Description:
- We had created a demo using drones and a forestry simulation that communicated in real time to measure temperatures in a forest region. There could be a lot of improvements added to this simulation to add more use cases for Hydra/hydrus and implementing them in the simulation.
SkillsRequired :
- Python
- Linux
- Hydra
- Server Management
- At least basic knowledge of DevOps
- HTML, CSS, JS
- Knowledge of any Javascript framework is a plus ( React Js or Vue Js)
- Basic Knowledge of Semantic Web
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- link:
name: A sample drone simulation
url: https://github.com/HTTP-APIs/hydra-flock-demo
- ideas:
sub_topic: Implement demos for early stage API standards
Description:
- There are many early stage API standards such as WFS-3.0 or Open-EO that are developed for geospatial applications. A cool demo could be developed that uses some geospatial application built using these standards and ports it to hydrus. This idea is not limited to geo-spatial domains. You could use any API standard that allows two applications to communicate and use Hydra/hydrus as an interface between them.
SkillsRequired :
- Python
- Linux
- Hydra and hydrus
- OpenEO/WFS/Any other API Standard for some application
- Basic Knowledge of Semantic Web and Hydra
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: hydrus
url: https://github.com/HTTP-APIs/hydrus
- link:
name: WFS
url: https://github.com/opengeospatial/WFS_FES
- link:
name: OpenEO
url: http://r-spatial.org/2016/11/29/openeo.html
- ideas:
sub_topic: Demonstration with Dynamic API paths
Description:
- If we can create an API whose structure(paths to different kinds of data) is constantly changing only the vocab path stays same. Then we can use a Hydra client to discover the required paths for various kinds of data. This can be a great way to demonstrate the capabilities and use cases of HTTP-APIs and Hydra in general. We can have a UI showing the API structure in real-time and allow users to POST/GET/PUT/DELETE any type of data. We can also show how the client and API server interact with each other ( We had a lot of requests going on in the drone demo and it was very difficult to understand how things are working in the background). For example Suppose we have a Student class with basic properties like Name, Id, Class etc. Then the user can request for data say "Students with Id = 1*" without knowing anything about the API structure as it's dynamic. We can also demonstrate advanced querying features with this.
SkillsRequired :
- Python
- Linux
- Server Management
- At least basic knowledge of DevOps
- HTML, CSS, JS
- Knowledge of any Javascript framework is a plus ( React Js or Vue Js)
- Basic Knowledge of Semantic Web
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Intermediate to Hard
RelatedLinks:
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- link:
name: A sample drone simulation
url: https://github.com/HTTP-APIs/hydra-flock-demo
- ideas:
sub_topic: Rail Management System
Description:
- We can have a cool demo about railway management where trains are routed based on available tracks and are assigned platforms and routes based on live information taken from several trains. This could be a good demo to showcase how Hydra can be used as a generic language since not all railway stations would use the same API to convey information to trains. We could have multiple Hydra based APIs running on railway stations and trains and all of them communicating with each other using Hydra and a common Vocabulary. We still need to find a vocabulary for this, or we could also create one.
SkillsRequired :
- Python
- Linux
- Server Management
- At least basic knowledge of DevOps
- HTML, CSS, JS
- Knowledge of any Javascript framework is a plus ( React Js or Vue Js)
- Basic Knowledge of Semantic Web
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Intermediate to Hard
RelatedLinks:
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- link:
name: A sample drone simulation
url: https://github.com/HTTP-APIs/hydra-flock-demo
- Idea:
Topic : Python Client Implementation
Description:
- Implement a generic Hydra client that can reference an API Documentation and allow users to interact with an API using objects, rather than URIs/paths. The HydraConsole is a good reference client to use, and we could extend functionality and implement a Python version of it. More ideas are welcome on this.
SkillsRequired :
- Strong Knowledge of Graphs
- At least basic knowledge of RDF
- JSON and JSON-LD
- Python
- Command Line
- Basic knowledge of Semantic Web
- Ability to learn new technologies quickly
- Ability to write test suites
DifficultyLevel : Intermediate to Hard
RelatedLinks:
- link:
name: Current implementation by @pchampin
url: https://github.com/pchampin/hydra-py
- link:
name: RDF overview
url: https://www.w3.org/RDF/
- link:
name: JSON-LD wiki
url: https://en.wikipedia.org/wiki/JSON-LD
- link:
name: The Book of Hydrus
url: https://gsocchrizandr.wordpress.com/the-book-of-hydrus
- link:
name: Hydra Draft
url: https://www.hydra-cg.com/spec/latest/core
- link:
name: Hydra Console
url: https://www.markus-lanthaler.com/hydra/console/
- Idea:
Topic : Support Falcon based server
Description:
- Falcon is a minimalist WSGI library for building speedy web APIs and app backends. When it comes to building HTTP APIs, other frameworks weigh you down with tons of dependencies and unnecessary abstractions. Falcon cuts to the chase with a clean design that embraces HTTP and the REST architectural style. Hydrus is currently implemented using Flask, we're thinking about switching to Falcon.
SkillsRequired :
- Python
- Git
- Sqlalchemy
- Falcon Web Framework
- Command Line
- Basic knowledge of Semantic Web
- Ability to learn new technologies quickly
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: Falcon Docs
url: https://falcon.readthedocs.io/en/latest/
- link:
name: Creating resource with Falcon
url: https://falcon.readthedocs.io/en/latest/user/tutorial.html#creating-resources
- link:
name: Hydus Github Repo
url: https://github.com/HTTP-APIs/hydrus
- Idea:
Topic : Django-rest-hydra
Description:
- Hydrus is developed in Flask because the applications we had in mind were mostly related to IoT and sensors, so it was supposed to be lightweight and functional. But if we may want to look for more traditional applications and the wider public, we may like to have a Django library ( http://hirokiky.org/tech/create_django_library.html ) that does have the same features as hydrus but works with Django.
- As Django has already a well-established REST library (Django-rest) it would be probably useful to extend it and create something like Django-rest-hydra, a library that let Django developers deploy hydra server in Django as now hydrus does with flask (starting from an RDF vocabulary or an OpenAPI definition).
- Note -> How to create a Django middleware.(https://simpleisbetterthancomplex.com/tutorial/2016/07/18/how-to-create-a-custom-django-middleware.html)
SkillsRequired :
- Python
- Git
- Django
- Django rest
- Basic knowledge of Semantic Web
- Ability to write test suites
DifficultyLevel : Intermediate
RelatedLinks:
- link:
name: Creating a Django Library
url: http://hirokiky.org/tech/create_django_library.html
- link:
name: How to create a Django middleware.
url: https://simpleisbetterthancomplex.com/tutorial/2016/07/18/how-to-create-a-custom-django-middleware.html
- link:
name: Django rest framework
url: http://www.django-rest-framework.org/
- Idea:
Topic : Create a QGIS plugin
Description:
- Create a QGIS plugin that works with hydrus. QGIS is an opensource geospatial client, geospatial clients are used to load maps in different formats (images, rasters, vectors). QGIS can work as an HTTP client to fetch data from special Web services called OGC Web Standards (WMS, WMTS, WFS). Plugin for QGIS can be developed in Python, a QGIS-HYDRA plugin may be able to query geospatial data stored in hydrus using the HYDRA vocabulary. The same functionality could be accomplished with.
SkillsRequired :
- Python
- Git
- Basic Knowledge of Semantic Web
- Good Knowledge of GIS software ecosystem
- High problem-solving abilities
- Ability to write test suites
DifficultyLevel : Hard
RelatedLinks:
- link:
name: QGIS Homepage
url: https://qgis.org/en/site/
- link:
name: QGIS Github Repo
url: https://github.com/qgis
- link:
name: OpenGeoSpatial Consortium Web standards
url: https://en.wikipedia.org/wiki/Open_Geospatial_Consortium#Standards