From 9ea8328ee8247eff88cd1fc2781104883bfb14bb Mon Sep 17 00:00:00 2001 From: Priyanshu Nayan Date: Thu, 28 Jan 2021 20:58:13 +0530 Subject: [PATCH 1/2] add using agent to query hydrus --- docs/src/content/tutorial/first.md | 24 --- .../content/tutorial/using-agent-to-query.md | 137 ++++++++++++++++++ docs/static/images/repl.png | Bin 0 -> 34120 bytes 3 files changed, 137 insertions(+), 24 deletions(-) delete mode 100644 docs/src/content/tutorial/first.md create mode 100644 docs/src/content/tutorial/using-agent-to-query.md create mode 100644 docs/static/images/repl.png diff --git a/docs/src/content/tutorial/first.md b/docs/src/content/tutorial/first.md deleted file mode 100644 index 8a1d209..0000000 --- a/docs/src/content/tutorial/first.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: First Tutorial -menu: Tutorial ---- - -# First Tutorial - -## How to say hello in Python? - -```python - import __hello__ - def hello(): - print("Hello there, again") - -``` - -## How to say hello in Python Again? - -```python - import __hello__ - def hello(): - print("Hello there, again") - -``` diff --git a/docs/src/content/tutorial/using-agent-to-query.md b/docs/src/content/tutorial/using-agent-to-query.md new file mode 100644 index 0000000..91a6bba --- /dev/null +++ b/docs/src/content/tutorial/using-agent-to-query.md @@ -0,0 +1,137 @@ +--- +name: Using agent to query hydrus +menu: Tutorial +--- + +# Using Agent to query Hydrus + +> You should have `hydrus` up and running. For instructions on how to start a hydrus server, checkout the quick start guide. To follow along you also need to have `git` and `python3` installed. + +`hydra-python-agent` or Agent is the smart Hydra client implemented in Python. The Agent is a smart client which is generic and automated that can establish resilient connected data networks leveraging knowledge graph. + +`hydra-python-agent` exposes multiple convenient interfaces: + +- A Python package - To make communication with a Hydra API easier in the software. +- Natural-language-like command line tool - This is a GET only implementation for now. It is in development. + + +Some of the important features of `hydra-python-agent` are: + +1. It provides a seamless client that can be used to communicate with Hydra APIs. +2. It caches metadata from the Hydra server it connects to, to allow querying on the client-side. +3. It maintains a synchronization mechanism which makes sure cached resources are consistent. +4. It allows the graph to be queried using OpenCypher. + +## To use agent as a package in REPL: + +1. Clone the repository by running this command in the terminal: `git clone https://github.com/HTTP-APIs/hydra-python-agent.git`. +2. Navigate into the repository by running: `cd hydra-python-agent` +3. Create a new virtual environment named agent: `python3 -m venv agent`. +4. Activate this virtual environment: `source agent/bin/activate`. +5. Install the necessary package: `pip install -r requirements.txt`. After this run: `python3 setup.py install`. +6. Start the redis server: `docker run -p 6379:6379 -it --rm redislabs/redisgraph:2.0-edge`. The agent uses redis to cache the meta data to make query faster. +7. Start the python3 REPL by typing `python3` and pressing enter. You should see something like this: + ![REPL](../../../static/images/repl.png) +8. In the REPL, import Agent: + +```python +from hydra_agent.agent import Agent +``` + +9. Connect Agent to hydrus by passing in the URL. The `Agent` is the factory class that returns the instance of the agent. All the CRUD operations can be invoked on this instance. + +```python +agent = Agent("http://localhost:8080/serverapi") # serverapi is the name of the API. +``` + +10. Once connected, we can now make CRUD operations. + +## Making CRUD Operations on Classes + +To GET an existing resource make a GET request to: + +```python +agent.get("http://localhost:8080/serverapi//") +agent.get("http://localhost:8080/serverapi//") +agent.get("http://localhost:8080/serverapi//") +``` + +You should see the response. + +To add a resource make a PUT request with the resource as the second parameter: + +```python +new_resource = { + "@type": "Drone", + "DroneState": { + "@type": "State", + "Battery": "50%", + "Direction": "N", + "Position": "50.34", + "SensorStatus": "Active", + "Speed": "100" + }, + "MaxSpeed": "500", + "Sensor": "Active", + "model": "Drone_1", + "name": "Drone1" +} +agent.put("http://localhost:8080/serverapi/Drone/", new_resource) +``` + +To update the resource Agent exposes the POST interface: + +```python +existing_resource["name"] = "Updated Name" +agent.post("http://localhost:8080/serverapi//", existing_resource) +``` + +To delete an existing resource, use the delete method: + +```python +agent.delete("http://localhost:8080/serverapi//") +``` + +## Making CRUD Operations on Collections + +To add members in the collection: + +``` +request_body = { + "@type": "", + "members": [ + { + "@id": "", + "@type": "" + }, + { + "@id": "", + "@type": "" + }, + ] +} +agent.put("http://localhost:8080/serverapi/", request_body) +``` + +NOTE: \ can be different in given request body. + +TO GET members of specific Collection: + +```python +agent.get("http://localhost:8080/serverapi//") +``` + +TO DELETE members of specific Collection: + +```python +agent.delete("http://localhost:8080/serverapi//") +``` + +More than that, `Agent` class extends Session from https://2.python-requests.org/en/master/api/#request-sessions, so all methods like auth, cookies, headers and so on can also be used. + +### In this Tutorial you learnt about: + +- smart clients +- `hydra-python-agent` +- Making CRUD operations using `hydra-python-agent` on classes +- Making CRUD operations using `hydra-python-agent` on Collections diff --git a/docs/static/images/repl.png b/docs/static/images/repl.png new file mode 100644 index 0000000000000000000000000000000000000000..a5fd9e78c108047097d4b0880c75cac958933a57 GIT binary patch literal 34120 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

-fvXgIj;Rya>3~{NnsT0(s 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 sAT28jSZU*5Cp>G0q%O2FkSU|spsD0N Date: Thu, 28 Jan 2021 20:58:59 +0530 Subject: [PATCH 2/2] add in the tutorial section --- docs/doczrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/doczrc.js b/docs/doczrc.js index f0b27e4..b72cf47 100644 --- a/docs/doczrc.js +++ b/docs/doczrc.js @@ -3,7 +3,7 @@ export default { menu:[ "Welcome to Hydra Ecosystem Docs", "Quickstart", - {name: 'Tutorial', menu:['First Tutorial']}, + {name: 'Tutorial', menu:['Using agent to query hydrus']}, {name: 'How To Guides', menu: ['First How to Guide']}, {name: 'Conceptual Guides', menu: ['Conceptual Guide 1']}, {name: 'Modules', menu: ['Hydra in Depth']},