diff --git a/docs/.gitbook/assets/Edge_Node_cover (1).png b/docs/.gitbook/assets/Edge_Node_cover (1).png
deleted file mode 100644
index b2457b1..0000000
Binary files a/docs/.gitbook/assets/Edge_Node_cover (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (1).png b/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (1).png
deleted file mode 100644
index a94dc34..0000000
Binary files a/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (2).png b/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (2).png
deleted file mode 100644
index a94dc34..0000000
Binary files a/docs/.gitbook/assets/Screen Shot 2023-02-22 at 14.51.44 (2).png and /dev/null differ
diff --git a/docs/.gitbook/assets/Screen Shot 2023-12-15 at 12.32.41 (1).png b/docs/.gitbook/assets/Screen Shot 2023-12-15 at 12.32.41 (1).png
deleted file mode 100644
index c681da5..0000000
Binary files a/docs/.gitbook/assets/Screen Shot 2023-12-15 at 12.32.41 (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/Screen Shot 2023-12-18 at 14.10.25 (1).png b/docs/.gitbook/assets/Screen Shot 2023-12-18 at 14.10.25 (1).png
deleted file mode 100644
index f1de1b2..0000000
Binary files a/docs/.gitbook/assets/Screen Shot 2023-12-18 at 14.10.25 (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/V8 Timeline (1).png b/docs/.gitbook/assets/V8 Timeline (1).png
deleted file mode 100644
index 7b4af39..0000000
Binary files a/docs/.gitbook/assets/V8 Timeline (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/aa (1).png b/docs/.gitbook/assets/aa (1).png
deleted file mode 100644
index c7922f5..0000000
Binary files a/docs/.gitbook/assets/aa (1).png and /dev/null differ
diff --git a/docs/.gitbook/assets/image (16).png b/docs/.gitbook/assets/image (16).png
deleted file mode 100644
index 6ae4c41..0000000
Binary files a/docs/.gitbook/assets/image (16).png and /dev/null differ
diff --git a/docs/.gitbook/assets/image (21).png b/docs/.gitbook/assets/image (21).png
deleted file mode 100644
index cdfd5c9..0000000
Binary files a/docs/.gitbook/assets/image (21).png and /dev/null differ
diff --git a/docs/.gitbook/assets/image (8).png b/docs/.gitbook/assets/image (8).png
deleted file mode 100644
index 6bb2281..0000000
Binary files a/docs/.gitbook/assets/image (8).png and /dev/null differ
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index a7ee982..7a91abe 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -16,6 +16,7 @@
* [Architecture](build-a-dkg-node-ai-agent/architecture.md)
* [Essentials Plugin](build-a-dkg-node-ai-agent/essentials-plugin.md)
+* [Using the DKG client](build-a-dkg-node-ai-agent/using-the-dkg-client.md)
* [Customizing your DKG agent](build-a-dkg-node-ai-agent/customizing-your-dkg-agent.md)
* [Evaluating agent responses](build-a-dkg-node-ai-agent/evaluating-agent-responses.md)
* [Set up your custom DKG Node fork & update flow](build-a-dkg-node-ai-agent/set-up-your-custom-dkg-node-fork-and-update-flow.md)
@@ -41,7 +42,7 @@
* [IPO voting](build-a-dkg-node-ai-agent/advanced-features-and-toolkits/dkg-paranets/initial-paranet-offerings-ipos/ipo-voting.md)
* [Contributing a plugin](build-a-dkg-node-ai-agent/contributing-a-plugin.md)
-## Contribute to the DKG
+## Contribute to the DKG
* [Hackathon: Scaling Trust in the Age of AI](contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/README.md)
* [DKG Social Graph Query Guide](contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/dkg-social-graph-query-guide.md)
@@ -83,7 +84,7 @@
* [Random Sampling & proofs explained](dkg-knowledge-hub/learn-more/introduction/random-sampling-dkg-proof-system/README.md)
* [Random Sampling rollout](dkg-knowledge-hub/learn-more/introduction/random-sampling-dkg-proof-system/random-sampling-rollout.md)
* [Random Sampling FAQ](dkg-knowledge-hub/learn-more/introduction/random-sampling-dkg-proof-system/random-sampling-faq.md)
- * [Rules & token thresholds](dkg-knowledge-hub/learn-more/introduction/rules-and-token-thresholds.md)
+ * [Edge Vs. Core Node — Rules & token thresholds](dkg-knowledge-hub/learn-more/introduction/edge-vs.-core-node-rules-and-token-thresholds.md)
* [Connected blockchains](dkg-knowledge-hub/learn-more/connected-blockchains/README.md)
* [NeuroWeb Parachain](dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md)
* [Base Network (L2)](dkg-knowledge-hub/learn-more/connected-blockchains/base-blockchain/README.md)
@@ -98,6 +99,7 @@
* [Protocol updates](dkg-knowledge-hub/learn-more/previous-updates/dkg-v8.0-update-guidebook/protocol-updates.md)
* [Feature roadmap](dkg-knowledge-hub/learn-more/previous-updates/dkg-v8.0-update-guidebook/feature-roadmap.md)
* [How to upgrade to V8?](dkg-knowledge-hub/learn-more/previous-updates/dkg-v8.0-update-guidebook/how-to-upgrade-to-v8.md)
+ * [Staking cap & outstanding network rewards release](dkg-knowledge-hub/learn-more/previous-updates/staking-threshold-update-and-outstanding-network-rewards-release.md)
* [What is a DKG Node?](dkg-knowledge-hub/learn-more/decentralized-knowle-dge-graph-dkg.md)
* [How-tos & tutorials](dkg-knowledge-hub/how-tos-and-tutorials/README.md)
* [Fund your Web3 wallets](dkg-knowledge-hub/how-tos-and-tutorials/fund-your-web3-wallets.md)
diff --git a/docs/build-a-dkg-node-ai-agent/advanced-features-and-toolkits/dkg-sdk/setting-up-your-development-environment.md b/docs/build-a-dkg-node-ai-agent/advanced-features-and-toolkits/dkg-sdk/setting-up-your-development-environment.md
index 51523a5..70ad767 100644
--- a/docs/build-a-dkg-node-ai-agent/advanced-features-and-toolkits/dkg-sdk/setting-up-your-development-environment.md
+++ b/docs/build-a-dkg-node-ai-agent/advanced-features-and-toolkits/dkg-sdk/setting-up-your-development-environment.md
@@ -50,7 +50,7 @@ Then, install the required dependencies by running:
npm install
```
-Next, create a file called `.env` and add the following lines:
+Next, create a file called `.env` and add the following lines:
```sh
NODE_ENV=development
@@ -61,7 +61,7 @@ RPC_ENDPOINT_BC2=http://127.0.0.1:9545
To start the local DKG network, run the **local network setup** script to install multiple node engines in the local environment. To ensure stability of operation, it is recommended to run at least 5 node engines (1 bootstrap and 4 subsequent node engines).
{% hint style="warning" %}
-The scripts below only work for macOS and Linux (or Windows WSL).
+The scripts below only work for macOS and Linux (or Windows WSL).
If you need help with the setup, contact the core development team on [Discord](https://discord.com/invite/FCgYk2S).
{% endhint %}
@@ -79,14 +79,12 @@ To start the local DKG network on **Linux**, run the following command:
./tools/local-network-setup/setup-linux-environment.sh --nodes=5
```
-
-
{% hint style="info" %}
-### Contributing
+#### Contributing
These setup instructions are a work in progress and are subject to change. The core development team expects to introduce improvements in setting up the DKG node engine in the local environment in the future.
-As DKG Node is open source, we **happily invite you to contribute to building the Decentralized Knowledge Graph.** We're excited about your contributions!
+As DKG Node is open source, we **happily invite you to contribute to building the Decentralized Knowledge Graph.** We're excited about your contributions!
Please visit the [GitHub](https://github.com/OriginTrail/ot-node) repo for more info.
{% endhint %}
diff --git a/docs/build-a-dkg-node-ai-agent/contributing-a-plugin.md b/docs/build-a-dkg-node-ai-agent/contributing-a-plugin.md
index 25ed279..4857842 100644
--- a/docs/build-a-dkg-node-ai-agent/contributing-a-plugin.md
+++ b/docs/build-a-dkg-node-ai-agent/contributing-a-plugin.md
@@ -150,7 +150,7 @@ Learn more in Turborepo docs.
### Further resources
-👥 OriginTrail Discord server
+👥 OriginTrail [Discord](https://discord.com/invite/xCaY7hvNwD) server
📖 **Expo framework:**
@@ -165,4 +165,3 @@ Learn more in Turborepo docs.
* [Filtering](https://turborepo.com/docs/crafting-your-repository/running-tasks#using-filters)
* [Configuration Options](https://turborepo.com/docs/reference/configuration)
* [CLI Usage](https://turborepo.com/docs/reference/command-line-reference)
-
diff --git a/docs/build-a-dkg-node-ai-agent/using-the-dkg-client.md b/docs/build-a-dkg-node-ai-agent/using-the-dkg-client.md
new file mode 100644
index 0000000..301f57f
--- /dev/null
+++ b/docs/build-a-dkg-node-ai-agent/using-the-dkg-client.md
@@ -0,0 +1,568 @@
+---
+description: >-
+ Learn how to use the DKG client (ctx.dkg) in your plugins to query, retrieve,
+ and publish Knowledge Assets on the OriginTrail Decentralized Knowledge Graph.
+---
+
+# Using the DKG client
+
+When building plugins for your DKG Node, you have access to `ctx.dkg` — a powerful client that lets you interact directly with the OriginTrail Decentralized Knowledge Graph. This page covers the core operations you'll use most often: **querying**, **getting**, and **publishing** Knowledge Assets.
+
+{% hint style="info" %}
+💡 **Quick Reference:** The `ctx.dkg` client is an instance of [dkg.js](advanced-features-and-toolkits/dkg-sdk/dkg-v8-js-client/) that's pre-configured and injected into every plugin via the `defineDkgPlugin` function.
+{% endhint %}
+
+## Accessing the DKG client
+
+Inside your plugin, you receive `ctx` as the first argument to `defineDkgPlugin`. The DKG client is available at `ctx.dkg`:
+
+```ts
+import { defineDkgPlugin } from "@dkg/plugins";
+
+export default defineDkgPlugin((ctx, mcp, api) => {
+ // ctx.dkg is your DKG client instance
+ // ctx.blob is the blob storage for file handling
+
+ // Register tools and routes that use ctx.dkg...
+});
+```
+
+***
+
+## Querying the DKG with SPARQL
+
+The most powerful way to explore and retrieve data from the DKG is through SPARQL queries. SPARQL is a query language for RDF data — think of it like SQL, but for graph databases.
+
+### Basic query syntax
+
+Use `ctx.dkg.graph.query()` to execute SPARQL queries:
+
+```ts
+const result = await ctx.dkg.graph.query(
+ `PREFIX schema:
+ SELECT ?subject ?name
+ WHERE {
+ ?subject schema:name ?name .
+ }`,
+ "SELECT" // Query type: SELECT, CONSTRUCT, ASK, or DESCRIBE
+);
+```
+
+### Query types
+
+| Type | Description | Returns |
+| ----------- | ---------------------------------------- | --------------------------------------- |
+| `SELECT` | Returns variable bindings (rows of data) | Array of objects with variable bindings |
+| `CONSTRUCT` | Builds a new RDF graph from results | RDF triples in JSON-LD format |
+| `ASK` | Boolean query — does a pattern exist? | `true` or `false` |
+| `DESCRIBE` | Returns RDF data about a resource | RDF description of the resource |
+
+### Query response structure
+
+```ts
+{
+ "status": "COMPLETED",
+ "data": [
+ { "subject": "https://example.org/entity1", "name": "Example Entity" },
+ { "subject": "https://example.org/entity2", "name": "Another Entity" }
+ ]
+}
+```
+
+### Example: Building a query tool
+
+Here's a complete example of registering an MCP tool that queries the DKG:
+
+```ts
+import { defineDkgPlugin } from "@dkg/plugins";
+import { z } from "@dkg/plugins/helpers";
+
+export default defineDkgPlugin((ctx, mcp) => {
+ mcp.registerTool(
+ "search-entities",
+ {
+ title: "Search DKG Entities",
+ description: "Search for entities by name in the DKG",
+ inputSchema: {
+ searchTerm: z.string().describe("Name or partial name to search for"),
+ },
+ },
+ async ({ searchTerm }) => {
+ const query = `
+ PREFIX schema:
+ PREFIX dkg:
+
+ SELECT ?entity ?name ?type
+ WHERE {
+ GRAPH {
+ ?g dkg:hasNamedGraph ?kaGraph .
+ }
+ GRAPH ?kaGraph {
+ ?entity schema:name ?name .
+ OPTIONAL { ?entity a ?type }
+ FILTER(CONTAINS(LCASE(STR(?name)), LCASE("${searchTerm}")))
+ }
+ }
+ LIMIT 20
+ `;
+
+ const result = await ctx.dkg.graph.query(query, "SELECT");
+
+ return {
+ content: [{
+ type: "text",
+ text: JSON.stringify(result.data, null, 2)
+ }],
+ };
+ }
+ );
+});
+```
+
+### Common query patterns
+
+#### Query all current Knowledge Assets
+
+Use `` to filter for currently valid Knowledge Assets (KAs):
+
+```sparql
+PREFIX schema:
+PREFIX dkg:
+
+SELECT ?subject ?predicate ?object
+WHERE {
+ GRAPH {
+ ?g dkg:hasNamedGraph ?kaGraph .
+ }
+ GRAPH ?kaGraph {
+ ?subject ?predicate ?object .
+ }
+}
+LIMIT 100
+```
+
+#### Query within a specific paranet
+
+Restrict queries to a paranet scope:
+
+```sparql
+PREFIX dkg:
+
+SELECT ?kaGraph ?subject ?predicate ?object
+WHERE {
+ GRAPH {
+ dkg:hasNamedGraph ?kaGraph .
+ }
+ GRAPH ?kaGraph {
+ ?subject ?predicate ?object .
+ }
+}
+```
+
+#### Query by publisher
+
+Find all KAs published by a specific wallet:
+
+```sparql
+PREFIX dkg:
+
+SELECT ?kaGraph
+WHERE {
+ GRAPH {
+ ?kc dkg:publishedBy .
+ ?kc dkg:hasNamedGraph ?kaGraph .
+ }
+}
+```
+
+#### Query by date range
+
+Filter KAs by publish time:
+
+```sparql
+PREFIX dkg:
+
+SELECT ?kaGraph ?publishTime
+WHERE {
+ GRAPH {
+ ?kc dkg:publishTime ?publishTime .
+ FILTER(?publishTime >= "2025-01-01T00:00:00Z"^^xsd:dateTime)
+ FILTER(?publishTime < "2025-02-01T00:00:00Z"^^xsd:dateTime)
+ ?kc dkg:hasNamedGraph ?kaGraph .
+ }
+}
+```
+
+{% hint style="success" %}
+**Pro Tip:** For more complex queries and advanced SPARQL patterns, see the [Query the DKG](advanced-features-and-toolkits/querying-the-dkg.md) documentation.
+{% endhint %}
+
+***
+
+## Getting Knowledge Assets
+
+To retrieve a specific Knowledge Asset by its UAL (Uniform Asset Locator), use `ctx.dkg.asset.get()`.
+
+### Basic get operation
+
+```ts
+const result = await ctx.dkg.asset.get(ual);
+```
+
+### Get with options
+
+```ts
+const result = await ctx.dkg.asset.get(ual, {
+ includeMetadata: true, // Include metadata about the KA
+});
+```
+
+### Response structure
+
+```ts
+{
+ "assertion": [
+ {
+ "@id": "https://example.org/entity",
+ "http://schema.org/name": [{ "@value": "Example Entity" }],
+ "@type": ["http://schema.org/Thing"]
+ }
+ ],
+ "operation": {
+ "get": {
+ "operationId": "uuid-here",
+ "status": "COMPLETED"
+ }
+ }
+}
+```
+
+### Example: Get tool implementation
+
+```ts
+import { defineDkgPlugin } from "@dkg/plugins";
+import { z } from "@dkg/plugins/helpers";
+
+export default defineDkgPlugin((ctx, mcp) => {
+ mcp.registerTool(
+ "get-knowledge-asset",
+ {
+ title: "Get Knowledge Asset",
+ description: "Retrieve a Knowledge Asset by its UAL",
+ inputSchema: {
+ ual: z.string().describe("The UAL of the Knowledge Asset"),
+ },
+ },
+ async ({ ual }) => {
+ try {
+ const result = await ctx.dkg.asset.get(ual, {
+ includeMetadata: true,
+ });
+
+ return {
+ content: [{
+ type: "text",
+ text: JSON.stringify(result, null, 2)
+ }],
+ };
+ } catch (error) {
+ throw new Error(`Failed to get asset: ${error.message}`);
+ }
+ }
+ );
+});
+```
+
+### Understanding UALs
+
+A UAL (Uniform Asset Locator) uniquely identifies a Knowledge Asset:
+
+```
+did:dkg:base:84532/0xd5550173b0f7b8766ab2770e4ba86caf714a5af5/10310
+```
+
+Components:
+
+* `did:dkg` — DID method prefix
+* `base:84532` — Blockchain name and chain ID
+* `0xd555...` — Contract address
+* `10310` — Asset ID (Knowledge Collection ID + optional Asset ID)
+
+***
+
+## Publishing Knowledge Assets
+
+Use `ctx.dkg.asset.create()` to publish new Knowledge Assets to the DKG.
+
+### Basic create operation
+
+```ts
+const content = {
+ public: {
+ "@context": "http://schema.org",
+ "@id": "https://example.org/my-entity",
+ "@type": "Thing",
+ "name": "My First Knowledge Asset",
+ "description": "An example entity on the DKG"
+ }
+};
+
+const result = await ctx.dkg.asset.create(content, {
+ epochsNum: 2, // How many epochs (months) to keep the asset
+});
+```
+
+### Public vs private content
+
+You can publish content as **public** (replicated across the network) or **private** (stays on your node only):
+
+```ts
+const content = {
+ public: {
+ "@context": "http://schema.org",
+ "@id": "https://example.org/entity",
+ "@type": "Organization",
+ "name": "Public Company Name"
+ },
+ private: {
+ "@context": "http://schema.org",
+ "@id": "https://example.org/entity",
+ "@type": "OrganizationPrivateData",
+ "revenue": "$10M",
+ "employeeCount": 150
+ }
+};
+
+const result = await ctx.dkg.asset.create(content, {
+ epochsNum: 6,
+});
+```
+
+### Create options
+
+| Option | Description | Default |
+| ------------------------------------------ | -------------------------------------------- | -------- |
+| `epochsNum` | Number of epochs (months) to store the asset | Required |
+| `minimumNumberOfFinalizationConfirmations` | Confirmations needed before finalized | 3 |
+| `minimumNumberOfNodeReplications` | Minimum nodes to replicate to | 1 |
+
+### Response structure
+
+```ts
+{
+ "UAL": "did:dkg:base:84532/0xd555.../10310",
+ "datasetRoot": "0x09d73283...",
+ "operation": {
+ "mintKnowledgeAsset": {
+ "transactionHash": "0x1a9f6b95...",
+ "blockNumber": 20541620,
+ "status": true
+ },
+ "publish": {
+ "operationId": "uuid-here",
+ "status": "PUBLISH_REPLICATE_END"
+ },
+ "finality": { "status": "FINALIZED" }
+ }
+}
+```
+
+### Example: Create tool implementation
+
+```ts
+import { defineDkgPlugin } from "@dkg/plugins";
+import { z } from "@dkg/plugins/helpers";
+
+export default defineDkgPlugin((ctx, mcp) => {
+ mcp.registerTool(
+ "publish-knowledge-asset",
+ {
+ title: "Publish Knowledge Asset",
+ description: "Create and publish a new Knowledge Asset to the DKG",
+ inputSchema: {
+ jsonld: z.string().describe("JSON-LD content to publish"),
+ privacy: z.enum(["public", "private"]).default("private"),
+ epochs: z.number().min(1).max(24).default(2),
+ },
+ },
+ async ({ jsonld, privacy, epochs }) => {
+ try {
+ const content = JSON.parse(jsonld);
+ const wrapped = { [privacy]: content };
+
+ const result = await ctx.dkg.asset.create(wrapped, {
+ epochsNum: epochs,
+ minimumNumberOfFinalizationConfirmations: 3,
+ minimumNumberOfNodeReplications: 1,
+ });
+
+ const ual = result?.UAL;
+
+ return {
+ content: [{
+ type: "text",
+ text: `✅ Knowledge Asset published!\n\nUAL: ${ual}\nPrivacy: ${privacy}\nEpochs: ${epochs}`
+ }],
+ };
+ } catch (error) {
+ throw new Error(`Failed to publish: ${error.message}`);
+ }
+ }
+ );
+});
+```
+
+### JSON-LD best practices
+
+When creating Knowledge Assets, follow these JSON-LD conventions:
+
+1. **Always include `@context`** — Use `http://schema.org` or a custom ontology
+2. **Use `@id` for unique identification** — URIs that uniquely identify your entity
+3. **Specify `@type`** — The type of entity (e.g., `Person`, `Organization`, `Product`)
+4. **Use schema.org vocabulary** — Prefer standard properties for interoperability
+
+```ts
+{
+ "@context": "http://schema.org",
+ "@id": "urn:myapp:products:12345",
+ "@type": "Product",
+ "name": "Wireless Headphones",
+ "brand": {
+ "@type": "Brand",
+ "name": "AudioTech"
+ },
+ "offers": {
+ "@type": "Offer",
+ "price": "99.99",
+ "priceCurrency": "USD"
+ }
+}
+```
+
+***
+
+## Complete DKG plugin example
+
+Here's a full MCP tool that demonstrates all three operations:
+
+```ts
+import { defineDkgPlugin } from "@dkg/plugins";
+import { z } from "@dkg/plugins/helpers";
+
+export default defineDkgPlugin((ctx, mcp, api) => {
+ // 1. Query Tool
+ mcp.registerTool(
+ "dkg-search",
+ {
+ title: "Search DKG",
+ description: "Search the DKG using a SPARQL query",
+ inputSchema: {
+ query: z.string().describe("SPARQL query to execute"),
+ queryType: z.enum(["SELECT", "CONSTRUCT", "ASK", "DESCRIBE"]).default("SELECT"),
+ },
+ },
+ async ({ query, queryType }) => {
+ const result = await ctx.dkg.graph.query(query, queryType);
+ return {
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
+ };
+ }
+ );
+
+ // 2. Get Tool
+ mcp.registerTool(
+ "dkg-get",
+ {
+ title: "Get Knowledge Asset",
+ description: "Retrieve a Knowledge Asset by UAL",
+ inputSchema: {
+ ual: z.string().describe("UAL of the Knowledge Asset"),
+ },
+ },
+ async ({ ual }) => {
+ const result = await ctx.dkg.asset.get(ual);
+ return {
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
+ };
+ }
+ );
+
+ // 3. Create Tool
+ mcp.registerTool(
+ "dkg-publish",
+ {
+ title: "Publish Knowledge Asset",
+ description: "Publish a new Knowledge Asset",
+ inputSchema: {
+ content: z.string().describe("JSON-LD content"),
+ privacy: z.enum(["public", "private"]).default("private"),
+ },
+ },
+ async ({ content, privacy }) => {
+ const parsed = JSON.parse(content);
+ const result = await ctx.dkg.asset.create({ [privacy]: parsed }, {
+ epochsNum: 2,
+ });
+ return {
+ content: [{ type: "text", text: `Published! UAL: ${result.UAL}` }],
+ };
+ }
+ );
+
+ // 4. REST API endpoint for querying
+ api.post("/query", async (req, res) => {
+ try {
+ const { query, queryType = "SELECT" } = req.body;
+ const result = await ctx.dkg.graph.query(query, queryType);
+ res.json({ success: true, data: result });
+ } catch (error: any) {
+ res.status(500).json({ success: false, error: error.message });
+ }
+ });
+});
+```
+
+***
+
+## Additional DKG client methods
+
+Beyond the core operations, `ctx.dkg` provides additional functionality:
+
+| Method | Description |
+| ----------------------------------- | ------------------------------------------------ |
+| `ctx.dkg.node.info()` | Get information about the connected DKG node |
+| `ctx.dkg.asset.update()` | Update an existing Knowledge Asset |
+| `ctx.dkg.asset.increaseAllowance()` | Pre-approve token spending for faster publishing |
+| `ctx.dkg.asset.decreaseAllowance()` | Revoke token spending authorization |
+
+***
+
+## Error handling
+
+Always wrap DKG operations in try-catch blocks:
+
+```ts
+try {
+ const result = await ctx.dkg.asset.get(ual);
+ // Handle success
+} catch (error) {
+ ctx.logger?.error("DKG operation failed:", error);
+ throw new Error(`Operation failed: ${error.message}`);
+}
+```
+
+Common error scenarios:
+
+* **Network errors** — Node unreachable or timeout
+* **Invalid UAL** — Malformed or non-existent asset
+* **Insufficient funds** — Not enough tokens for publishing
+* **Invalid JSON-LD** — Malformed content structure
+
+***
+
+## Next steps
+
+* [**Query the DKG**](advanced-features-and-toolkits/querying-the-dkg.md) — Deep dive into SPARQL query patterns
+* [**DKG JavaScript SDK**](advanced-features-and-toolkits/dkg-sdk/dkg-v8-js-client/) — Full SDK documentation
+* [**Customizing your DKG Agent**](customizing-your-dkg-agent.md) — Build custom plugins
+* [**Essentials Plugin**](essentials-plugin.md) — Reference implementation for DKG tools
diff --git a/docs/contribute-to-the-dkg/delegated-staking/README.md b/docs/contribute-to-the-dkg/delegated-staking/README.md
index 6a1e771..060e61d 100644
--- a/docs/contribute-to-the-dkg/delegated-staking/README.md
+++ b/docs/contribute-to-the-dkg/delegated-staking/README.md
@@ -13,7 +13,7 @@ As a decentralized system, the OriginTrail Decentralized Knowledge Graph (DKG) e
## TRAC delegated staking mechanics
-For a DKG Core Node to be eligible to host a portion of the DKG and receive TRAC network rewards, its TRAC stake plays a crucial role. Set at a minimum of 50,000 TRAC on a particular blockchain, the stake has an important role in ensuring the security of the DKG. The DKG Core Node operators can contribute to the node stake on their own or by attracting more TRAC to their stake through delegated staking.
+For a DKG Core Node to be eligible to host a portion of the DKG and receive TRAC network rewards, its TRAC stake plays a crucial role. Set at a minimum of 50,000 TRAC on a particular blockchain, the stake has an important role in ensuring the security of the DKG. The DKG Core Node operators can contribute to the node stake on their own or by attracting more TRAC to their stake through delegated staking.
There are 2 roles involved in delegated staking: **Core Node operators** and **TRAC delegators.**
@@ -33,7 +33,7 @@ Contrary to inflationary systems, TRAC staking is strictly utility-based, and re
As knowledge publishers create Knowledge Assets on the DKG, they lock an appropriate amount of TRAC tokens in the DKG smart contracts. The TRAC amount offered has to be high enough to ensure that enough DKG Core Nodes will store it for a specific amount of time. The nodes then commit to storing the Knowledge Assets for a specific amount of time, measured in **30-day periods called epochs**.
-At the end of each epoch, DKG nodes "prove" that they are providing DKG services to the DKG smart contracts, which in turn unlocks TRAC rewards initially locked by the knowledge publisher.
+At the end of each epoch, DKG nodes "prove" that they are providing DKG services to the DKG smart contracts, which in turn unlocks TRAC rewards initially locked by the knowledge publisher.
Many Core Nodes can compete for the same TRAC reward on the basis of their total stake, node ask, and publishing factor. Node rewards are a function of 4 parameters in order of importance:
@@ -49,15 +49,13 @@ After claiming rewards, the rewards are **automatically restaked, increasing the
To introduce a level of predictability into network operations, token withdrawals are subject to a 28-day unbonding period.
{% hint style="warning" %}
-If you want to withdraw tokens in order to delegate to another node on the same network (blockchain), you **do not** have to wait 28 days! [See here >](redelegating-stake.md)
+If you want to withdraw tokens in order to delegate to another node on the same network (blockchain), you **do not** have to wait 28 days! [See here >](redelegating-stake.md)
{% endhint %}
{% hint style="success" %}
Delegated staking is a non-custodial system, so the Core Node operator has no access to the locked TRAC tokens at any time.
{% endhint %}
-
-
Each Core Node operator can also set an “**operator fee,**” which is a percentage of the TRAC rewards deducted each time a node claims rewards from a Knowledge Asset. The remaining TRAC fee is then split proportionally to the share of staked tokens across all delegators.
{% hint style="info" %}
@@ -118,6 +116,6 @@ To understand how to set up your operator fee, follow the [Core Node setup](../.
## **Have questions?**
-Drop by our [Discord](https://discord.gg/aNpBjf97) or [Telegram group](https://t.me/origintrail), and feel free to ask your questions there. Make sure to follow our official announcements, and stay safe!
+Drop by our [Discord](https://discord.com/invite/xCaY7hvNwD) or [Telegram group](https://t.me/origintrail), and feel free to ask your questions there. Make sure to follow our official announcements, and stay safe!
Happy staking! 🚀
diff --git a/docs/contribute-to-the-dkg/delegated-staking/redelegating-stake.md b/docs/contribute-to-the-dkg/delegated-staking/redelegating-stake.md
index ab532db..ed013d4 100644
--- a/docs/contribute-to-the-dkg/delegated-staking/redelegating-stake.md
+++ b/docs/contribute-to-the-dkg/delegated-staking/redelegating-stake.md
@@ -11,7 +11,7 @@ If you want **move your delegated TRAC stake from one DKG node to another**, you
## Keep in mind
* The DKG is multichain. However, **TRAC tokens can only be redelegated within nodes on the same blockchain**
-* The amount of stake (TRAC) that you want to redelegate **should not exceed the second node's remaining capacity** (a node can have a maximum of 2,000,000 TRAC stake delegated to it).
+* The amount of stake (TRAC) that you want to redelegate **should not exceed the second node's remaining capacity** (a node can have a maximum of 5,000,000 TRAC stake delegated to it).
***
@@ -21,18 +21,16 @@ If you want **move your delegated TRAC stake from one DKG node to another**, you
2. Go to the **'My delegation**' tab to see available nodes that you can redelegate from.
3. Optionally, use the **'Filter by blockchain'** dropdown to select the desired blockchain, which will filter and display nodes on this network along with their staking information.
4. Once you've decided which node you want to redelegate your TRAC from, click on the **'Manage stake'** button next to the desired node on the right side of the table. Make sure you read the disclaimer.
-5. When the staking pop-up opens, you'll have the option to **Delegate, Redelegate,** or **Withdraw** TRAC tokens from the node. Proceed by selecting '**Redelegate**'.
+5. When the staking pop-up opens, you'll have the option to **Delegate, Redelegate,** or **Withdraw** TRAC tokens from the node. Proceed by selecting '**Redelegate**'.
Use the redelegate button in the popup to redelegate your stake
-
-
-6. After clicking on 'Redelegate', a field to enter the amount of TRAC you wish to redelegate to another node will appear on the right side of the pop-up, as well as the select box, for selecting the other node — the one that will receive the TRAC. **Enter the amount of TRAC you want redelegated and select the node you want to redelegate to.**
+6. After clicking on 'Redelegate', a field to enter the amount of TRAC you wish to redelegate to another node will appear on the right side of the pop-up, as well as the select box, for selecting the other node — the one that will receive the TRAC. **Enter the amount of TRAC you want redelegated and select the node you want to redelegate to.**
{% hint style="warning" %}
-You can stake your TRAC only to nodes that have less than 2,000,000 TRAC stake delegated to them.
+You can stake your TRAC only to nodes that have less than 5,000,000 TRAC stake delegated to them.
{% endhint %}
{% hint style="info" %}
@@ -44,8 +42,7 @@ Only the nodes from the same network with the remaining capacity greater than ze
8. Once both transactions are signed and confirmed, you should see a **'Stake redelegated successfully'** message appear.
-9. To confirm that the process was successful, **check your TRAC delegation** by going to the 'My delegations' tab above the table with the nodes and verifying that your delegations are listed there. Additionally, ensure that the stake amount on the node has decreased and the amount on the other node has increased following the successful redelegation.\
-
+9. To confirm that the process was successful, **check your TRAC delegation** by going to the 'My delegations' tab above the table with the nodes and verifying that your delegations are listed there. Additionally, ensure that the stake amount on the node has decreased and the amount on the other node has increased following the successful redelegation.\\
{% hint style="info" %}
If you encounter any issues during the staking process or require assistance, please get in touch with the OriginTrail community in [Discord](https://discord.gg/xCaY7hvNwD).
diff --git a/docs/contribute-to-the-dkg/delegated-staking/step-by-step-staking.md b/docs/contribute-to-the-dkg/delegated-staking/step-by-step-staking.md
index 8b9b752..5d5aadc 100644
--- a/docs/contribute-to-the-dkg/delegated-staking/step-by-step-staking.md
+++ b/docs/contribute-to-the-dkg/delegated-staking/step-by-step-staking.md
@@ -8,14 +8,14 @@ Welcome to the step-by-step TRAC delegated staking guide! First, lets start with
## Prerequisites
-1. You need to have some TRAC tokens to delegate. See ['How to get on TRAC(k)?' section of this website >](https://origintrail.io/get-started/trac-token)
+1. You need to have some TRAC tokens to delegate. See ['How to get on TRAC(k)?' section of this website >](https://origintrail.io/get-started/trac-token)
2. You need to decide which blockchain you want to stake on. The DKG supports multiple blockchains:
* [Base Blockchain](../../dkg-knowledge-hub/learn-more/connected-blockchains/base-blockchain/)
* [NeuroWeb](../../dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md)
* [Gnosis Chain](../../dkg-knowledge-hub/learn-more/connected-blockchains/gnosis-chain/)
3. Bridge your TRAC to the chosen blockchain. See instructions for bridging:
* [Base Blockchain](../../dkg-knowledge-hub/learn-more/connected-blockchains/base-blockchain/)
- * [NeuroWeb](../../graveyard/everything/teleport-instructions-neuroweb.md)
+ * [NeuroWeb](../../dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md)
* [Gnosis Chain](../../dkg-knowledge-hub/learn-more/connected-blockchains/gnosis-chain/)
4. Have some gas fee tokens available on the chosen network:
* Base Mainnet: ETH on Base
@@ -36,46 +36,46 @@ For the purpose of this tutorial we used the Metamask wallet extension.
Once you have confirmed that you have both gas tokens and TRAC tokens available in your wallet, you can proceed to the Staking Dashboard at [https://staking.origintrail.io/](https://staking.origintrail.io/) and follow the steps below:
-### **Step 1:**
+### **Step 1:**
Click on the **'Connect wallet'** button in the top right corner of the navigation bar and follow the prompts to connect your wallet to the interface.
-### **Step 2:**
+### **Step 2:**
-Make sure you have selected the right blockchain in your wallet.
+Make sure you have selected the right blockchain in your wallet.
-### **Step 3:**
+### **Step 3:**
The Staking Dashboard shows a list of all the Core Nodes hosting the DKG. This table shows different information, such as:
-* The node name,
-* Which blockchain it's connected to,
-* How much stake does a node have,
-* The node's ask,
-* The node's operator fee,
-* Reward statistics, and other.
+* The node name,
+* Which blockchain it's connected to,
+* How much stake does a node have,
+* The node's ask,
+* The node's operator fee,
+* Reward statistics, and other.
-**To delegate your TRAC tokens, you need to pick one or more nodes you believe are going to perform best for the network** (on the basis of criteria explained [here](./)). The chosen node has to have **enough "room" to take TRAC,** meaning less than 2M TRAC already staked. 2M is the maximum amount of TRAC staked per node.
+**To delegate your TRAC tokens, you need to pick one or more nodes you believe are going to perform best for the network** (on the basis of criteria explained [here](./)). The chosen node has to have **enough "room" to take TRAC,** meaning less than 5M TRAC already staked. 5M is the maximum amount of TRAC staked per node.
-### **Step 4:**
+### **Step 4:**
Once you click on a Core Node, a staking pop-up opens with the option to delegate or withdraw TRAC tokens from the node. Proceed by pressing the **'Delegate'** button
Delegating popup
-### **Step 5:**
+### **Step 5:**
Enter the amount of TRAC you would like to delegate and press the **'Delegate TRAC'** button. The delegation process will require two transactions: one to increase the allowance and another to confirm the contract interaction.
-### **Step 6:**
+### **Step 6:**
To confirm that the process was successful, check your TRAC delegation by going to the **'My delegations'** tab above the table with the nodes and verify that your delegation is listed there. Additionally, ensure that the stake amount on the node has increased following the successful delegation.
diff --git a/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/README.md b/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/README.md
index 24d37b5..95f152b 100644
--- a/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/README.md
+++ b/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/README.md
@@ -2,6 +2,7 @@
description: >-
🧠 Code trust & verifiability into AI. Join the global hackathon to build a
collective digital immune system for the AI era. 🚀
+hidden: true
---
# Hackathon: Scaling Trust in the Age of AI
diff --git a/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/dkg-social-graph-query-guide.md b/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/dkg-social-graph-query-guide.md
index a2531e6..a7adea9 100644
--- a/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/dkg-social-graph-query-guide.md
+++ b/docs/contribute-to-the-dkg/hackathon-scaling-trust-in-the-age-of-ai/dkg-social-graph-query-guide.md
@@ -80,20 +80,26 @@ Represents a social media account's core identity:
"@graph": [
{
"@type": ["schema:Person", "foaf:Person", "prov:Agent"],
- "@id": "https://ca.investing.com",
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg",
"schema:identifier": [
{
"@type": "schema:PropertyValue",
"schema:propertyID": "creatorId",
- "schema:value": "news::ca.investing.com"
+ "schema:value": "youtube::UCY1kMZp36IQSyNx_9h4mpCg"
},
{
"@type": "schema:PropertyValue",
"schema:propertyID": "platform",
- "schema:value": "news"
+ "schema:value": "youtube"
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:propertyID": "userId",
+ "schema:value": "UCY1kMZp36IQSyNx_9h4mpCg"
}
],
- "schema:dateCreated": "1970-01-21T09:19:38.440Z"
+ "schema:dateCreated": "2025-11-13T19:55:47.000Z",
+ "prov:generatedAtTime": "2025-11-13T19:55:47.000Z"
}
]
}
@@ -113,37 +119,76 @@ Captures time-series data about account activity and connections:
"@graph": [
{
"@type": ["prov:Entity", "schema:Observation"],
- "@id": "urn:uuid:25499e5d-7c9a-53d7-85c6-acc1cdac6ba8",
- "prov:generatedAtTime": "1970-01-21T09:19:38.440Z",
+ "@id": "urn:uuid:d103990f-b092-5f73-952c-b7c3554add43",
+ "prov:generatedAtTime": "2025-11-13T19:55:47.000Z",
+ "schema:observationDate": "2025-11-13T19:55:47.000Z",
"schema:about": {
- "@id": "https://twitter.com/i/user/748244810692104192"
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg"
+ },
+ "prov:specializationOf": {
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg"
},
"foaf:knows": [
{
"@type": "foaf:Person",
- "@id": "https://x.com/9to5mac",
- "schema:name": "9to5mac",
+ "@id": "https://www.youtube.com/@pondermusic",
+ "schema:name": "pondermusic",
"schema:additionalProperty": {
"@type": "schema:PropertyValue",
"schema:name": "connectionStrength",
- "schema:value": 17
+ "schema:value": 60
}
}
],
+ "schema:expertise": [
+ {
+ "@type": "schema:Thing",
+ "@id": "https://lunarcrush.com/api4/public/topic/money/v1",
+ "schema:name": "money",
+ "schema:additionalProperty": [
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "creatorRank",
+ "schema:value": 4572
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "postCount",
+ "schema:value": 2
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "percent",
+ "schema:value": 0.98
+ }
+ ]
+ }
+ ],
+ "prov:hadPrimarySource": {
+ "@type": "prov:Entity",
+ "@id": "https://lunarcrush.com/api4/public/creator/youtube/UCY1kMZp36IQSyNx_9h4mpCg/v1"
+ },
"foaf:accountProfileInfo": {
"@type": "schema:Person",
- "schema:name": "Ryan Christoffel",
- "schema:alternateName": "iryantldr",
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg",
+ "schema:name": "Mark Rober",
+ "foaf:name": "Mark Rober",
+ "schema:alternateName": "markrober",
+ "foaf:nick": "markrober",
"schema:image": {
"@type": "schema:ImageObject",
- "schema:url": "https://pbs.twimg.com/profile_images/..."
+ "schema:url": "https://yt3.ggpht.com/ytc/AIdro_ksXY2REjZ6gYKSgnWT5jC_zT9mX900vyFtVinR8KbHww=s88-c-k-c0x00ffffff-no-rj",
+ "foaf:depiction": "https://yt3.ggpht.com/ytc/AIdro_ksXY2REjZ6gYKSgnWT5jC_zT9mX900vyFtVinR8KbHww=s88-c-k-c0x00ffffff-no-rj"
}
},
+ "schema:rank": 2099,
"schema:interactionStatistic": [
{
"@type": "schema:InteractionCounter",
- "schema:interactionType": {"@type": "schema:FollowAction"},
- "schema:userInteractionCount": 208065784
+ "schema:interactionType": {
+ "@type": "schema:FollowAction"
+ },
+ "schema:userInteractionCount": 71700000
}
]
}
@@ -165,25 +210,39 @@ Core metadata about a social media post:
"@graph": [
{
"@type": ["schema:SocialMediaPosting", "sioc:Post", "prov:Entity"],
- "@id": "https://247sports.com/college/notre-dame/article/...",
+ "@id": "https://youtube.com/watch?v=6zU2rLYHLhw",
"schema:author": [
- {"@id": "https://twitter.com/i/user/151595281"}
+ {
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg",
+ "prov:agent": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg"
+ }
],
+ "schema:image": [],
"schema:identifier": {
"@type": "schema:PropertyValue",
"schema:propertyID": "postId",
- "schema:value": "247sports.com-1025526375"
+ "schema:value": "6zU2rLYHLhw"
},
- "schema:datePublished": "1970-01-21T08:57:14.089Z",
- "schema:url": "https://247sports.com/...",
- "schema:genre": "news",
- "schema:headline": "Notre Dame Notebook: Irish Defense...",
- "schema:description": "Notre Dame's defense dominated...",
- "schema:keywords": "notre dame,north carolina",
+ "prov:wasAttributedTo": {
+ "@id": "https://youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg"
+ },
+ "schema:datePublished": "2025-01-23T16:08:11.000Z",
+ "prov:generatedAtTime": "2025-01-23T16:08:11.000Z",
+ "sioc:created_at": "2025-01-23T16:08:11.000Z",
+ "schema:dateCreated": "2025-10-30T13:40:03.000Z",
+ "schema:url": "https://youtube.com/watch?v=6zU2rLYHLhw",
+ "foaf:page": "https://youtube.com/watch?v=6zU2rLYHLhw",
+ "schema:genre": "youtube-video",
+ "sioc:post_type": "youtube-video",
+ "schema:headline": "The Fastest Way To Make A Salad!",
+ "schema:description": "The Fastest Way To Make A Salad! w/@NickDiGiovanni",
+ "schema:keywords": [
+ "make a"
+ ],
"schema:about": [
{
"@type": "schema:Thing",
- "@id": "https://lunarcrush.com/api4/public/topic/notre%20dame/v1"
+ "@id": "https://lunarcrush.com/api4/public/topic/make%20a/v1"
}
]
}
@@ -204,27 +263,49 @@ Engagement metrics tracked over time:
"@graph": [
{
"@type": ["prov:Entity", "schema:Observation"],
- "@id": "urn:uuid:de0e9046-5754-5a22-b5a9-1f3a520a846b",
- "prov:generatedAtTime": "1970-01-21T09:19:38.340Z",
- "schema:about": {
- "@id": "https://9to5mac.com/2025/10/16/i-love-my-iphone-air..."
- },
- "prov:specializationOf": {
- "@id": "https://9to5mac.com/2025/10/16/i-love-my-iphone-air..."
- },
+ "@id": "urn:uuid:60330101-6002-59bf-a26b-97d1a8384766",
+ "prov:generatedAtTime": "2025-10-30T13:40:04.000Z",
+ "schema:observationDate": "2025-10-30T13:40:04.000Z",
"schema:interactionStatistic": {
"@type": "schema:InteractionCounter",
"schema:interactionType": "schema:InteractAction",
- "schema:userInteractionCount": 35921,
+ "schema:userInteractionCount": 62659943,
"schema:description": "Total interactions"
},
+ "schema:reviewRating": {
+ "@type": "schema:Rating",
+ "schema:ratingValue": "3.00",
+ "schema:bestRating": 5,
+ "schema:worstRating": 1,
+ "schema:description": "Sentiment score"
+ },
"schema:variableMeasured": [
{
"@type": "schema:PropertyValue",
- "schema:name": "detailedMetrics",
- "schema:value": "{\"views\":35744,\"quotes\":2,\"replies\":20,\"retweets\":5,\"bookmarks\":13,\"favorites\":137}"
+ "schema:name": "likes",
+ "schema:value": 2129894
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "views",
+ "schema:value": 60527488
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "comments",
+ "schema:value": 2561
}
- ]
+ ],
+ "schema:about": {
+ "@id": "https://youtube.com/watch?v=6zU2rLYHLhw"
+ },
+ "prov:specializationOf": {
+ "@id": "https://youtube.com/watch?v=6zU2rLYHLhw"
+ },
+ "prov:hadPrimarySource": {
+ "@type": "prov:Entity",
+ "@id": "https://lunarcrush.com/api4/public/posts/youtube-video/6zU2rLYHLhw/v1"
+ }
}
]
}
@@ -244,15 +325,15 @@ Basic topic information:
"@graph": [
{
"@type": ["schema:Thing", "skos:Concept", "foaf:Topic"],
- "@id": "https://lunarcrush.com/api4/public/topic/%240992hk/v1",
- "schema:name": "Lenovo Group Limited",
- "foaf:name": "Lenovo Group Limited",
- "schema:alternateName": "$0992hk",
- "skos:notation": "$0992hk",
+ "@id": "https://lunarcrush.com/api4/public/topic/money/v1",
+ "schema:name": "Money",
+ "foaf:name": "Money",
+ "schema:alternateName": "money",
+ "skos:notation": "money",
"schema:identifier": {
"@type": "schema:PropertyValue",
"schema:propertyID": "topicSlug",
- "schema:value": "$0992hk"
+ "schema:value": "money"
}
}
]
@@ -272,48 +353,171 @@ Topic trends, rankings, and sentiment over time:
"@graph": [
{
"@type": ["prov:Entity", "schema:Observation"],
- "@id": "urn:uuid:42422e77-aef8-5621-8350-5175e64b929b",
- "prov:generatedAtTime": "1970-01-21T09:19:53.508Z",
+ "@id": "urn:uuid:08ff5e69-85b9-5bba-80fb-dd76348a1043",
+ "prov:generatedAtTime": "2025-11-13T19:55:47.000Z",
+ "schema:observationDate": "2025-11-13T19:55:47.000Z",
"schema:about": {
- "@id": "https://lunarcrush.com/api4/public/topic/postgame/v1"
+ "@id": "https://lunarcrush.com/api4/public/topic/money/v1"
+ },
+ "prov:specializationOf": {
+ "@id": "https://lunarcrush.com/api4/public/topic/money/v1"
},
"schema:relatedLink": [
- {"@id": "https://lunarcrush.com/api4/public/topic/blue%20jays/v1"},
- {"@id": "https://lunarcrush.com/api4/public/topic/toronto/v1"}
+ {"@id": "https://lunarcrush.com/api4/public/topic/coins%20layer%201/v1"},
+ {"@id": "https://lunarcrush.com/api4/public/topic/investment/v1"},
+ {"@id": "https://lunarcrush.com/api4/public/topic/coins%20pow/v1"}
+ ],
+ "schema:category": [
+ "Finance"
],
- "schema:rank": 1223,
+ "prov:hadPrimarySource": {
+ "@type": "prov:Entity",
+ "@id": "https://lunarcrush.com/api4/public/topic/money/v1"
+ },
+ "schema:rank": 5,
"schema:additionalProperty": [
{
"@type": "schema:PropertyValue",
"schema:name": "numContributors",
- "schema:value": 1762
+ "schema:value": 225169
},
{
"@type": "schema:PropertyValue",
"schema:name": "numPosts",
- "schema:value": 1762
+ "schema:value": 225169
},
{
"@type": "schema:PropertyValue",
"schema:name": "interactions24h",
- "schema:value": 16461825
+ "schema:value": 803878895
},
{
"@type": "schema:PropertyValue",
"schema:name": "trend",
- "schema:value": "up"
+ "schema:value": "down"
}
],
+ "schema:genre": "Finance",
"schema:variableMeasured": [
{
"@type": "schema:PropertyValue",
- "schema:name": "postTypeDistribution",
- "schema:value": "{\"news\":293,\"tweet\":17606,\"reddit-post\":10608}"
+ "schema:name": "postTypeDistribution:news",
+ "schema:value": 10737
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "postTypeDistribution:tweet",
+ "schema:value": 1030324
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "postTypeDistribution:reddit-post",
+ "schema:value": 68340
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "postTypeDistribution:tiktok-video",
+ "schema:value": 773815
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "postTypeDistribution:youtube-video",
+ "schema:value": 830036
},
{
"@type": "schema:PropertyValue",
- "schema:name": "sentimentByType",
- "schema:value": "{\"news\":74,\"tweet\":59,\"reddit-post\":18}"
+ "schema:name": "interactionsByType:news",
+ "schema:value": 143137968
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "interactionsByType:tweet",
+ "schema:value": 159234882
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "interactionsByType:reddit-post",
+ "schema:value": 1045990
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "interactionsByType:tiktok-video",
+ "schema:value": 168630892
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "interactionsByType:youtube-video",
+ "schema:value": 331829163
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentByType:news",
+ "schema:value": 98
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentByType:tweet",
+ "schema:value": 64
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentByType:reddit-post",
+ "schema:value": 67
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentByType:tiktok-video",
+ "schema:value": 74
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentByType:youtube-video",
+ "schema:value": 76
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentDetail:news",
+ "schema:value": {
+ "neutral": 4229,
+ "negative": 2484,
+ "positive": 4024
+ }
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentDetail:tweet",
+ "schema:value": {
+ "neutral": 414100,
+ "negative": 219356,
+ "positive": 396868
+ }
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentDetail:reddit-post",
+ "schema:value": {
+ "neutral": 29674,
+ "negative": 12815,
+ "positive": 25851
+ }
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentDetail:tiktok-video",
+ "schema:value": {
+ "neutral": 346694,
+ "negative": 109220,
+ "positive": 317901
+ }
+ },
+ {
+ "@type": "schema:PropertyValue",
+ "schema:name": "sentimentDetail:youtube-video",
+ "schema:value": {
+ "neutral": 347658,
+ "negative": 118169,
+ "positive": 364209
+ }
}
]
}
diff --git a/docs/dkg-key-concepts.md b/docs/dkg-key-concepts.md
index b3241f7..a661967 100644
--- a/docs/dkg-key-concepts.md
+++ b/docs/dkg-key-concepts.md
@@ -9,15 +9,15 @@ description: >-
## DKG Network & Nodes
-OriginTrail Decentralized Knowledge Graph (DKG) is a permissionless, multi-chain infrastructure designed to host and interlink semantically-rich “[Knowledge Assets](dkg-key-concepts.md#knowledge-assets)” - structured containers of machine-readable data (e.g., RDF-based graphs) that are discoverable, verifiable, and owned by their creators.\
+OriginTrail Decentralized Knowledge Graph (DKG) is a permissionless, multi-chain infrastructure designed to host and interlink semantically-rich “[Knowledge Assets](dkg-key-concepts.md#knowledge-assets)” — structured containers of machine-readable data (e.g., RDF-based graphs) that are discoverable, verifiable, and owned by their creators.\
\
The DKG enables AI-agents and applications to query, connect, and build upon distributed knowledge while preserving provenance and trust through blockchain-anchored proof systems.
The DKG Network is comprised of network nodes, running on different servers and devices. **There are two primary node types that enable the network’s operation**. The first is **the DKG Core Node**, which hosts the public DKG, persistently stores and serves knowledge assets, participates in random-sampling proofs and token incentives, and requires a minimum stake (e.g., 50,000 TRAC) to participate.\
\
-The second is the **DKG Edge Node**, which runs on devices at the “edge” (e.g., laptops, phones, IoT, and even servers, if deployed that way) and enables local knowledge processing, private-graph handling, and integration with AI-pipelines (via APIs like dRAG), allowing owners to retain control of their data while still contributing to the global DKG.
+The second is the **DKG Edge Node**, which runs on devices at the “edge” (e.g., laptops, phones, IoT, and even servers, if deployed that way) and enables local knowledge processing, private-graph handling, and integration with AI-pipelines (via APIs like dRAG), allowing owners to retain control of their data while still contributing to the global DKG.
-Together, Core and Edge Nodes form the network and exchange knowledge, facilitated by the blockchain. They share the same codebas,e however, so **it is possible to turn a DKG Edge Node into a DKG Core node (more on that later in the docs)**.
+Together, Core and Edge Nodes form the network and exchange knowledge, facilitated by the blockchain. They share the same codebase, however, so **it is possible to turn a DKG Edge Node into a DKG Core Node (more on that** [**here**](dkg-knowledge-hub/learn-more/introduction/edge-vs.-core-node-rules-and-token-thresholds.md)**)**.
## Knowledge Assets
@@ -30,8 +30,6 @@ More precisely, a Knowledge Asset is a web resource identified by a unique Unifo
* **Uniform Asset Locator**: Globally unique URI with assigned ownership using blockchain accounts, implemented as a non-fungible token (NFT) on the blockchain.
* **Derivable vector embeddings**: These facilitate the neuro-symbolic features - such as link prediction, entity prediction, similarity search, and others.
-
-
Knowledge content can be observed as a time series of knowledge content states or **assertions**. Each assertion can be independently verified for integrity by the verifier recomputing the cryptographic fingerprint and comparing if the computed result matches the corresponding blockchain fingerprint record.
@@ -48,7 +46,7 @@ Similar to distributed databases, the OriginTrail DKG applies replication mechan
## What is a UAL?
-Uniform Asset Locators (UALs) are ownable identifiers on the DKG, similar to URLs in the traditional web. The UALs follow the DID URL specification and are used to identify and locate a specific Knowledge Asset within the OriginTrail DKG.
+Uniform Asset Locators (UALs) are ownable identifiers on the DKG, similar to URLs in the traditional web. The UALs follow the DID URL specification and are used to identify and locate a specific Knowledge Asset within the OriginTrail DKG.
UAL consists of 5 parts:
@@ -82,22 +80,22 @@ The Trace token (TRAC) is the utility token that powers the OriginTrail Decentra
## Decentralized Retrieval Augmented Generation
-Patrick Lewis coined the term Retrieval-Augmented Generation (RAG) in a [2020 paper](https://arxiv.org/pdf/2005.11401.pdf). It is a technique for enhancing the accuracy and reliability of GenAI models with facts fetched from external sources. This allows artificial intelligence (AI) solutions to dynamically fetch relevant information before the generation process, enhancing the accuracy of responses by limiting the generation to re-working the retrieved inputs. \
+Patrick Lewis coined the term Retrieval-Augmented Generation (RAG) in a [2020 paper](https://arxiv.org/pdf/2005.11401.pdf). It is a technique for enhancing the accuracy and reliability of GenAI models with facts fetched from external sources. This allows artificial intelligence (AI) solutions to dynamically fetch relevant information before the generation process, enhancing the accuracy of responses by limiting the generation to re-working the retrieved inputs.\
\
**Decentralized Retrieval Augmented Generation (dRAG) advances the model by organizing external sources in a DKG with verifiable sources made available for AI models to use.** The framework enables a hybrid AI system that brings together neural (e.g., LLMs) and symbolic (e.g., Knowledge Graph) methodologies. Contrary to using a solely neural AI approach based on vector embedding representations, a symbolic AI approach enhances it with the strength of Knowledge Graphs by introducing a basis in symbolic representations.
-dRAG is, therefore, a framework that allows AI solutions to tap into the strengths of both paradigms:
+dRAG is, therefore, a framework that allows AI solutions to tap into the strengths of both paradigms:
-* The powerful learning and generalization capabilities of neural networks, and
-* The precise, rule-based processing of symbolic AI.
+* The powerful learning and generalization capabilities of neural networks, and
+* The precise, rule-based processing of symbolic AI.
It operates on two core components:
-(1) the DKG paranets and
+(1) the DKG paranets and
-(2) AI models.
+(2) AI models.
-The dRAG applications framework is entirely compatible with the existing techniques, tools, and RAG frameworks and supports all major data formats.
+The dRAG applications framework is entirely compatible with the existing techniques, tools, and RAG frameworks and supports all major data formats.
## Knowledge mining
@@ -125,6 +123,6 @@ If you are interested in learning more about NFTs, you can find out more [here](
The next building block of the DKG is **AI para-networks** or **paranets**.
-**AI para-networks** or **paranets** are autonomously operated structures in the DKG, owned by their community as a paranet operator. In paranets, we find **assemblies of Knowledge Assets** driving use cases with associated **paranet-specific AI services** and an **incentivization model** to reward knowledge miners fueling its growth.
+**AI para-networks** or **paranets** are autonomously operated structures in the DKG, owned by their community as a paranet operator. In paranets, we find **assemblies of Knowledge Assets** driving use cases with associated **paranet-specific AI services** and an **incentivization model** to reward knowledge miners fueling its growth.
**To see the DKG in action, continue to the** [**Installation section**](getting-started/decentralized-knowle-dge-graph-dkg.md)**.**
diff --git a/docs/dkg-knowledge-hub/how-tos-and-tutorials/README.md b/docs/dkg-knowledge-hub/how-tos-and-tutorials/README.md
index 4d9f0fc..fa3f13e 100644
--- a/docs/dkg-knowledge-hub/how-tos-and-tutorials/README.md
+++ b/docs/dkg-knowledge-hub/how-tos-and-tutorials/README.md
@@ -8,6 +8,6 @@ description: >-
#### Pages in this section
-* [**DKG V8.1.X Update Guidebook**](https://app.gitbook.com/o/-McnF-Jcg4utndKcdeko/s/-McnEkhdd7JlySeckfHM/~/changes/408/dkg-knowledge-hub/how-tos-and-tutorials/dkg-v8.1.x-update-guidebook) – A detailed walkthrough for updating your DKG Node to the latest release.
-* [**Bridging to Moonbeam**](https://app.gitbook.com/o/-McnF-Jcg4utndKcdeko/s/-McnEkhdd7JlySeckfHM/~/changes/408/dkg-knowledge-hub/how-tos-and-tutorials/bridging-to-moonbeam) – How to connect OriginTrail components to Moonbeam for multi-chain deployments.
-* [**Builder tutorials**](https://app.gitbook.com/o/-McnF-Jcg4utndKcdeko/s/-McnEkhdd7JlySeckfHM/~/changes/408/dkg-knowledge-hub/how-tos-and-tutorials/tutorials) – Practical tutorials and examples for publishing data, creating Knowledge Assets, and integrating with applications.
+* [**DKG V8.1.X Update Guidebook**](dkg-v8.1.x-update-guidebook.md) – A detailed walkthrough for updating your DKG Node to the latest release.
+* [**Bridging to Moonbeam**](bridging-to-moonbeam.md) – How to connect OriginTrail components to Moonbeam for multi-chain deployments.
+* [**Builder tutorials**](tutorials.md) – Practical tutorials and examples for publishing data, creating Knowledge Assets, and integrating with applications.
diff --git a/docs/dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md b/docs/dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md
index 60fba2c..ad45942 100644
--- a/docs/dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md
+++ b/docs/dkg-knowledge-hub/learn-more/connected-blockchains/neuroweb.md
@@ -14,9 +14,10 @@ More information on NEURO can be found in the [official NeuroWeb documentation](
## Bridging TRAC to NeuroWeb
-To use TRAC tokens on NeuroWeb for powering your nodes, staking, or other activities, you need to bridge TRAC to NeuroWeb.
+To use TRAC tokens on NeuroWeb for powering your nodes, staking, or other activities, you need to bridge TRAC to NeuroWeb.
-You can transfer TRAC tokens from Ethereum to NeuroWeb and vice versa via [Snowbridge](https://app.snowbridge.network/).
+You can transfer TRAC tokens from Ethereum to NeuroWeb and vice versa via [Snowbridge](https://app.snowbridge.network/). \
+Bridging instructions are available in the [NeuroWeb official documentation](https://docs.neuroweb.ai/ethereum-neuroweb-trac-bridge).
## Adding TRAC on NeuroWeb to your wallet
@@ -24,7 +25,7 @@ Here are step-by-step instructions for adding the TRAC token on NeuroWeb to your
TRAC token address: 0xFfFFFFff00000000000000000000000000000001
-### **Step 1:**
+### **Step 1:**
Open Metamask that is connected to NeuroWeb (connection details available here), then under the Assets tab, click on `Import tokens`.
@@ -39,4 +40,3 @@ On the import tokens page, you need to add the TRAC token contract address. Usua
### Step 3:
After you get all the fields filled with the right information (as in the image above), you click **'Add custom tokens'** and your TRAC balance will be displayed in Metamask.
-
diff --git a/docs/dkg-knowledge-hub/learn-more/decentralized-knowle-dge-graph-dkg.md b/docs/dkg-knowledge-hub/learn-more/decentralized-knowle-dge-graph-dkg.md
index 916a032..d14230b 100644
--- a/docs/dkg-knowledge-hub/learn-more/decentralized-knowle-dge-graph-dkg.md
+++ b/docs/dkg-knowledge-hub/learn-more/decentralized-knowle-dge-graph-dkg.md
@@ -18,7 +18,7 @@ The DKG Node is the next evolution of the OriginTrail node software — your int
In the OriginTrail ecosystem, there are two types of roles your DKG Node can fulfill:
* **The DKG Edge Node** is designed to operate at the network "edge" and can be set up on anything from laptops and phones to the cloud. They can enrich and utilize DKG knowledge and can operate agents, but are not responsible for hosting the DKG state. Therefore, DKG Edge Nodes do not require TRAC token stake to run — Edge Nodes can fully publish, query, and verify knowledge, but are not eligible for a share of protocol fees (via delegated stake) as they do not contribute DKG services to the wider network, and therefore do not require a high uptime.
-* **DKG Core Nodes** can do everything Edge Nodes can, but are intended to run as the "network core" — they are running the DKG and maintain its state, which requires high uptime. A DKG Core Node, therefore, needs a minimum of 50,000 TRAC staked as an economic guarantee, which can be "sponsored" by any ecosystem stakeholder willing to delegate TRAC to it. Once a DKG Core Node is set up and contributing to the network, it earns network publishing fees based on its contribution to the network.
+* **DKG Core Nodes** can do everything Edge Nodes can, but are intended to run as the "network core" — they are running the DKG and maintain its state, which requires high uptime. A DKG Core Node, therefore, needs a minimum of 50,000 TRAC staked as an economic guarantee, which can be "sponsored" by any ecosystem stakeholder willing to delegate TRAC to it. Once a DKG Core Node is set up and contributing to the network, it earns network publishing fees based on its contribution to the network.
@@ -31,7 +31,7 @@ Running a DKG Node is designed to be accessible — but like any powerful techno
* **AI agent concepts** – Knowing how agents interact with external data (like the DKG) will help you design better applications.
* **Basic terminal & server skills** – Installing and managing a node requires comfort with the command line and deploying services on a VPS.
-We recommend exploring our [introductory resources or tutorials if any of these areas are new to you](https://app.gitbook.com/o/-McnF-Jcg4utndKcdeko/s/-McnEkhdd7JlySeckfHM/~/changes/408/dkg-knowledge-hub). And remember — you’re not alone. The OriginTrail Discord community is active and welcoming, with dedicated channels where you can ask questions, troubleshoot issues, and share ideas as you learn.
+We recommend exploring our [introductory resources or tutorials if any of these areas are new to you](/broken/pages/NiPXKCuxKbkBdWfF6pBd). And remember — you’re not alone. The OriginTrail Discord community is active and welcoming, with dedicated channels where you can ask questions, troubleshoot issues, and share ideas as you learn.
***
diff --git a/docs/dkg-knowledge-hub/learn-more/introduction/rules-and-token-thresholds.md b/docs/dkg-knowledge-hub/learn-more/introduction/edge-vs.-core-node-rules-and-token-thresholds.md
similarity index 100%
rename from docs/dkg-knowledge-hub/learn-more/introduction/rules-and-token-thresholds.md
rename to docs/dkg-knowledge-hub/learn-more/introduction/edge-vs.-core-node-rules-and-token-thresholds.md
diff --git a/docs/dkg-knowledge-hub/learn-more/previous-updates/staking-threshold-update-and-outstanding-network-rewards-release.md b/docs/dkg-knowledge-hub/learn-more/previous-updates/staking-threshold-update-and-outstanding-network-rewards-release.md
new file mode 100644
index 0000000..c734790
--- /dev/null
+++ b/docs/dkg-knowledge-hub/learn-more/previous-updates/staking-threshold-update-and-outstanding-network-rewards-release.md
@@ -0,0 +1,60 @@
+# Staking cap & outstanding network rewards release
+
+**TL;DR**
+
+* We’re **increasing the staking cap from 5,000,000 $TRAC to 10,000,000 $TRAC to accommodate more stake delegations** on the best-performing DKG nodes.
+* To ensure staking doesn’t outweigh other performance drivers (e.g., node publishing factor), we will **publish an RFC with an updated rewards formula before the updated staking cap goes live**. The formula update is planned for the **end of the next epoch (around February 10)**.
+* With the last epoch of previously allocated V6 rewards expiring on January 9th (today), the conditions to begin **releasing outstanding network rewards are met**. The rewards deployment is scheduled for **the end of epoch 13 (around February 10)**.
+
+#### What’s changing and why
+
+As the network continues to grow, we’re seeing increased delegation demand—especially toward the best-performing DKG nodes. To better accommodate this and reduce delegation bottlenecks, we’re updating the staking parameters used for delegations.
+
+**1) Staking cap increases to 10,000,000 $TRAC**
+
+To support more stake delegations on top-performing nodes, the staking cap on the DKG nodes will increase from 5,000,000 $TRAC to 10,000,000 $TRAC.
+
+This change is intended to make it easier for delegators to stake with high-performing nodes without hitting the previous threshold as quickly.
+
+**2) Rewards formula update will be introduced via RFC**
+
+We also want to maintain a balanced incentive structure—where staking is important, but does not overshadow other network performance factors, such as the node publishing factor.
+
+To retain that balance:
+
+* We will introduce a change to the rewards formula via a public RFC (Request for Comments) before implementation.
+* The goal is transparency and feedback prior to rollout.
+* The formula change is planned to be implemented at the end of the next epoch (around February 10).
+
+**3) Outstanding network rewards will be released after a snapshot**
+
+There are outstanding network rewards to be released. To do this cleanly and fairly:
+
+* After the current epoch ends on January 10, we will take a network snapshot.
+* That snapshot will be used to implement the distribution.
+* The outstanding network rewards will be released at the end of the next epoch (around February 10).
+
+
+
+#### Key dates and timeline
+
+* **January 9 - Epoch 12 ends**
+ * A network snapshot will be taken at the end of the epoch.
+* **\~February 10 (at end of epoch 13)**
+ * Outstanding network rewards released
+ * Formula update implemented (after the RFC is published and reviewed)
+ * Staking cap increased on DKG nodes from 5M to 10M $TRAC.
+
+_(All “around” dates are aligned to epoch timing.)_
+
+#### What this means for delegators
+
+* More capacity to delegate to the best-performing DKG nodes, due to the higher cap (10M $TRAC).
+* No immediate action is required purely because of this announcement — your delegation remains as-is unless you choose to adjust it.
+* If you care about how staking weight vs. publishing/performance factors are balanced, you’ll be able to review and comment on the upcoming RFC before the formula change is implemented.
+
+#### What this means for node operators
+
+* The network is **reinforcing a performance-based model: stake matters, and publishing/performance factors continue to matter**.
+* Please **keep an eye out for the RFC** outlining the formula update, and be ready to provide feedback.
+* The snapshot and rewards release timeline is now clearly defined: snapshot after Jan 9, distribution around Feb 10.
diff --git a/docs/dkg-knowledge-hub/learn-more/readme/kg.md b/docs/dkg-knowledge-hub/learn-more/readme/kg.md
index 9c8c32c..de5c838 100644
--- a/docs/dkg-knowledge-hub/learn-more/readme/kg.md
+++ b/docs/dkg-knowledge-hub/learn-more/readme/kg.md
@@ -27,8 +27,8 @@ As humans, we can quickly understand that this data is related to the same **thi
### What is linked data and the Semantic Web?
-> _"The Semantic Web isn't just about putting data on the web. It is about making links, so that a person or machine can explore the web of data. With linked data, when you have some of it, you can find other, related, data."_ \
-> _- Tim Berners-Lee, the father of the World Wide Web and Semantic Web_
+> _"The Semantic Web isn't just about putting data on the web. It is about making links, so that a person or machine can explore the web of data. With linked data, when you have some of it, you can find other, related, data."_\
+> NAN;_- Tim Berners-Lee, the father of the World Wide Web and Semantic Web_
The core idea behind linked data is to represent all **things** with **relationships** between them in a common graph. Linked data is built on primitives called "**triples",** which connect a **subject entity** with an **object entity** via a **relationship**.
@@ -42,15 +42,13 @@ Integrating the two above-mentioned example datasets according to the principles

-
-
-Having such a "semantic network" of data, we inherently add context and enable easy extensions. The semantic graph can be easily queried in many ways and enables growing a body of _knowledge_ around things rather than keeping "tables of strings".
+Having such a "semantic network" of data, we inherently add context and enable easy extensions. The semantic graph can be easily queried in many ways and enables growing a body of _knowledge_ around things rather than keeping "tables of strings".
In the coming sections, we will show you how to use the OriginTrail Decentralized Knowledge Graph (DKG) for data discovery and querying. However, let's first explain what a knowledge graph is.
### What is a knowledge graph?
-There are many definitions of knowledge graphs (KGs), all slightly different. Without emphasizing precision, all of them describe a knowledge graph as a network of entities — physical & digital objects, events, or concepts — illustrating the relationship between them (aka a semantic network). KGs are used by major companies such as [Amazon](http://lunadong.com/talks/PG.pdf), [Google](https://en.wikipedia.org/wiki/Google_Knowledge_Graph), [Uber](https://www.youtube.com/watch?v=r3yMSl5NB_Q), [IBM](https://www.ibm.com/cloud/learn/knowledge-graph), etc., for various applications: search, data integration, knowledge reasoning, recommendation engines, analytics, machine learning, and AI, etc.
+There are many definitions of knowledge graphs (KGs), all slightly different. Without emphasizing precision, all of them describe a knowledge graph as a network of entities — physical & digital objects, events, or concepts — illustrating the relationship between them (aka a semantic network). KGs are used by major companies such as [Amazon](http://lunadong.com/talks/PG.pdf), [Google](https://en.wikipedia.org/wiki/Google_Knowledge_Graph), [Uber](https://www.youtube.com/watch?v=r3yMSl5NB_Q), [IBM](https://www.ibm.com/cloud/learn/knowledge-graph), etc., for various applications: search, data integration, knowledge reasoning, recommendation engines, analytics, machine learning, and AI, etc.
Key characteristics of knowledge graphs are:
@@ -62,7 +60,6 @@ For the moment, we restrict this document only to a high-level introduction and

-**Knowledge graphs are commonly deployed within the domain of one organization and are designed to capture knowledge from various sources both from within and outside of the organization.** These centralized knowledge graphs generate huge value for their owners, yet a decentralized globally shared knowledge graph brings orders of magnitude higher value to everyone participating.
+**Knowledge graphs are commonly deployed within the domain of one organization and are designed to capture knowledge from various sources both from within and outside of the organization.** These centralized knowledge graphs generate huge value for their owners, yet a decentralized globally shared knowledge graph brings orders of magnitude higher value to everyone participating.
We present the **OriginTrail Decentralized Knowledge Graph (DKG)** as the first permissionless, global, open decentralized knowledge graph. Learn more about the [OriginTrail DKG here](decentralized-knowle-dge-graph-dkg.md).
-
diff --git a/docs/dkg-knowledge-hub/useful-resources/test-token-faucet.md b/docs/dkg-knowledge-hub/useful-resources/test-token-faucet.md
index 8b59fe5..ddb5e64 100644
--- a/docs/dkg-knowledge-hub/useful-resources/test-token-faucet.md
+++ b/docs/dkg-knowledge-hub/useful-resources/test-token-faucet.md
@@ -6,7 +6,7 @@ description: Learn how to get testnet tokens from the OriginTrail Discord faucet
The OriginTrail Decentralized Knowledge Graph (DKG) provides a testing environment on the NeuroWeb testnet, Gnosis Chiado, and Base Sepolia blockchains. To perform various blockchain operations on these testnets, users need both **test TRAC on the chosen network** and the **test utility token** of their chosen blockchain for gas.
-The **OriginTrail faucet service**, which provides test tokens, is deployed on the [**OriginTrail Discord server**](https://discord.com/invite/WaeSb5Mxj6) and located in the [**#faucet-bot**](https://discord.com/invite/WaeSb5Mxj6) channel.
+The **OriginTrail faucet service**, which provides test tokens, is deployed on the [**OriginTrail Discord server**](https://discord.gg/D9n4TeTaKG) and located in the [**#faucet-bot**](https://discord.gg/c8NSEmND) channel.
To view the available faucet options, run the following command in the chat of the **#faucet-bot** channel:
@@ -31,4 +31,3 @@ Currently, depending on your requirements, you can request tokens for the follow
{% endhint %}
If you experience any issues with the Faucet Bot, please tag the core developers in one of the Discord channels.
-
diff --git a/docs/getting-started/decentralized-knowle-dge-graph-dkg.md b/docs/getting-started/decentralized-knowle-dge-graph-dkg.md
index 8514866..7475e3c 100644
--- a/docs/getting-started/decentralized-knowle-dge-graph-dkg.md
+++ b/docs/getting-started/decentralized-knowle-dge-graph-dkg.md
@@ -1,7 +1,7 @@
# Installation
{% hint style="info" %}
-If you are new to OriginTrail, DKG, knowledge graphs, or blockchains, we highly recommend becoming familiar with the [DKG—Key concepts](../dkg-key-concepts.md) before proceeding.
+If you are new to OriginTrail, DKG, knowledge graphs, or blockchains, we highly recommend becoming familiar with the [DKG—Key concepts](../dkg-key-concepts.md) before proceeding.
{% endhint %}
### What are we installing today?
@@ -12,7 +12,7 @@ To install the **DKG Edge Node**, we will be using the DKG CLI (`dkg-cli`) - a s
### The DKG utilizes blockchain
-The DKG Network utilizes blockchains as a trusted environment for incentivisation and securing data exchanges. It's a multichain network, so DKG Nodes support 3 blockchains, but can currently be deployed on a **single blockchain at a time** (multichain deployment support is on the way).
+The DKG Network utilizes blockchains as a trusted environment for incentivisation and securing data exchanges. It's a multichain network, so DKG Nodes support 3 blockchains, but can currently be deployed on a **single blockchain at a time** (multichain deployment support is on the way).
If you're not too familiar with blockchain technology, and not sure which blockchain to pick to get started with the DKG Node, which one is better for you etc - don't worry, a default blockchain will be chosen for you and you will be able to learn as you go (the DKG Node abstracts a lot of the complexities of blockchain for you). You shouldn't notice a big difference between blockchains while you are in development — this choice matters most when you are ready for your DKG Node deployment to mainnet.
@@ -25,7 +25,7 @@ For now, you need to know the following:
### What do you need for the installation?
* A **macOS** or **Linux** machine with at least 8GB RAM and 20GB storage space (Windows version is on the way)
-* Node.js **v22.20.0** or higher installed
+* NVM and Node.js **v22.20.0** or higher installed
* About 15-30 minutes of your time to complete all the steps
### OK, let's go!
@@ -38,7 +38,7 @@ npm install -g dkg-cli
#### 2. Generate the DKG Node Configuration
-Your DKG Node allows for rich configuration (more on that in the **Configuration** section later), however this setup focuses on a minimal default configuration.
+Your DKG Node allows for rich configuration (more on that in the **Configuration** section later), however this setup focuses on a minimal default configuration.
We recommend setting up your project folder and starting with the default development setup on DKG testnet.
@@ -65,14 +65,20 @@ All DKG node wallets require native blockchain tokens, while the publishing wall
+**MySQL configuration:**
+
+If you have an existing MySQL database already configured on your environment, please make sure to pass your root password to `DB_PASSWORD` parameter in the setup .env file.
+
+If you do not have MySQL installed, password passed this parameter will be set as your root password.
+
#### 3. Funding wallets
-As mentioned previously, your DKG Node requires tokens to be able to create Knowledge Assets.
+As mentioned previously, your DKG Node requires tokens to be able to create Knowledge Assets.
**To get tokens for the DKG testnet, use the** [**testnet token faucet**](../dkg-knowledge-hub/useful-resources/test-token-faucet.md)**.** For DKG Mainnet deployments, we suggest visiting the [TRAC token](https://origintrail.io/technology/trac-token) page to check for its availability.
{% hint style="warning" %}
-Make sure to fund your node keys with tokens before running the `dkg-cli install` command; otherwise, your DKG node might not function correctly.
+Make sure to fund your node keys with tokens before running the `dkg-cli install` command; otherwise, your DKG node might not function correctly.
{% endhint %}
Here's an overview of supported blockchains and the required tokens per key type.
@@ -95,14 +101,14 @@ The installation can take a few minutes. It installs the DKG Node in the same di
#### 5. Configure your DKG Agent
-Run the agent setup script to enable LLM features. You'll be prompted for your LLM provider, API key, model name, and DKG environment (must match your setup-config choice: testnet or mainnet). The agent supports multiple providers; examples are listed below.
+Run the agent setup script to enable LLM features. You'll be prompted for your LLM provider, API key, model name, and DKG environment (must match your setup-config choice: testnet or mainnet).
```sh
cd dkg-node
dkg-cli agent-setup
```
-DKG Node supports various LLM providers. Some examples include:
+DKG Agent supports various LLM providers. Some examples include:
| Provider | API Key Link |
| -------------------------- | ------------------------------------------------------------------------------------ |
@@ -190,7 +196,7 @@ All commands work from any directory and automatically detect your operating sys
A `createUser` is also possible via the `dkg-cli` included to simplify the creation of additional user accounts.
```sh
-cd dkg-node/apps/agent
+cd dkg-node
dkg-cli create-user
# Enter: email, password, permissions (e.g., `mcp llm blob scope123`)
```
@@ -214,4 +220,4 @@ The following list provides an overview of which services are running locally an
* 📖 [Documentation](https://docs.origintrail.io/)
* 🐛 [Report issues](https://github.com/OriginTrail/dkg-node-installer/issues)
-* 💬 [Discord community](https://discord.gg/aNpBjf97)
+* 💬 [Discord community](https://discord.com/invite/xCaY7hvNwD)
diff --git a/docs/getting-started/dkg-node-services.md b/docs/getting-started/dkg-node-services.md
index f1f4009..668244f 100644
--- a/docs/getting-started/dkg-node-services.md
+++ b/docs/getting-started/dkg-node-services.md
@@ -7,7 +7,7 @@ description: >-
# DKG Node Services
-## Run[^1]ning your DKG Node in development mode
+## Running your DKG Node in development mode
You will be running your DKG Node in **development mode** while building, experimenting, and customizing your DKG Node, before deploying it in production. In this mode, the system automatically reloads on code changes, streams real-time logs, and gives you immediate feedback as you work.
@@ -24,7 +24,7 @@ This will:
* Help you debug and iterate quickly in a local environment.
{% hint style="info" %}
-## Troubleshooting
+### Troubleshooting
If `npm install` fails, try:
@@ -40,7 +40,7 @@ Also confirm your Node.js version is **v22+**.
Once your dev server is up (`npm run dev`), several powerful tools become available through your browser. These interfaces let you **manage, inspect, and debug** every part of your DKG Node.
-### **DKG Node & Agent UI**
+### **DKG Node & Agent UI**
[**http://localhost:8081/**](http://localhost:8081/)
@@ -67,7 +67,7 @@ It allows:
If your DKG Node is the “brain,” the MCP server is the **communication layer** - it’s what lets AI systems talk to your node programmatically.
-### **Swagger UI (API Explorer)**
+### **Swagger UI (API Explorer)**
[**http://localhost:9200/swagger**](http://localhost:9200/swagger)
@@ -94,9 +94,3 @@ It allows you to:
{% hint style="danger" %}
If you’re using the Brave browser, please disable Shields when accessing Drizzle Studio - otherwise you may not be able to view the database records.
{% endhint %}
-
-
-
-
-
-[^1]:
diff --git a/docs/graveyard/everything/dkg-edge-node/customize-and-build-with-the-edge-node.md b/docs/graveyard/everything/dkg-edge-node/customize-and-build-with-the-edge-node.md
index 605d1b7..7f5022e 100644
--- a/docs/graveyard/everything/dkg-edge-node/customize-and-build-with-the-edge-node.md
+++ b/docs/graveyard/everything/dkg-edge-node/customize-and-build-with-the-edge-node.md
@@ -14,10 +14,9 @@ Users can add custom variables to the `UserConfig` table, making them accessible
## Local environment setup with forked services
-To begin customizing and building your own solution using the OriginTrail Edge Node stack, we recommend the following local development setup:\
+To begin customizing and building your own solution using the OriginTrail Edge Node stack, we recommend the following local development setup:\\
-
-1. ### Fork Core Edge Node Repositories
+1. #### Fork Core Edge Node Repositories
In order to fully tailor the Edge Node to your specific use case, it is recommended that you **fork the following components** into your own GitHub account:
@@ -32,20 +31,16 @@ To begin customizing and building your own solution using the OriginTrail Edge N
👉 Fork this if you want to modify business logic, expose new routes, or integrate additional microservices.
4. **Edge Node UI**\
The user-facing interface of the Edge Node.\
- 👉 Fork this to customize branding, UX, workflows, or connect it with your own backend services.\
-
-2. ### Authentication Service (Optional Fork)
- 1. **Edge Node Authentication Service**\
- This handles user sessions and tokens.\
- Recommended to use as-is for most cases to keep things simple and aligned with best practices.\
- 🛠️ Optional: You may fork this if you need:
-
- 1. Custom authentication methods (e.g., biometric login, enterprise SSO)
- 2. Integration with external identity providers
- 3. Custom logic for Verifiable Credential issuance or DID resolution
-
-
-3. ### Forked Repositories Setup
+ 👉 Fork this to customize branding, UX, workflows, or connect it with your own backend services.\\
+2. #### Authentication Service (Optional Fork)
+ 1. **Edge Node Authentication Service**\
+ This handles user sessions and tokens.\
+ Recommended to use as-is for most cases to keep things simple and aligned with best practices.\
+ 🛠️ Optional: You may fork this if you need:
+ 1. Custom authentication methods (e.g., biometric login, enterprise SSO)
+ 2. Integration with external identity providers
+ 3. Custom logic for Verifiable Credential issuance or DID resolution
+3. #### Forked Repositories Setup
Once you’ve successfully forked the core Edge Node repositories and tested the default setup using the official public repos, you’ll need to **clean your local environment** before installing your customized versions.
@@ -58,12 +53,10 @@ To begin customizing and building your own solution using the OriginTrail Edge N
After pruning the default Edge Node setup, your environment will be reset:
1. All previously cloned **Edge Node service repositories** will be deleted
- 2. All **Edge Node databases** will be dropped\
-
+ 2. All **Edge Node databases** will be dropped\\
2. **Switch to Your Forked Repositories**
1. **Open your `.env` file** located at the root of the project.
- 2. Replace the official repository URLs with the links to your **forked repositories.**\
-
+ 2. Replace the official repository URLs with the links to your **forked repositories.**\\
3. **Install Your Custom Edge Node**
1. Run Edge node installer script which will install services based on your forked repos.
2. If your Edge node is set on MacOS, execute following script to run your services:\
@@ -108,7 +101,7 @@ A **DAG** defines the execution order of tasks within a **pipeline**, while a **
* optionally: If _airflow webserver_ is used, it should also be restarted
* **Unpause** your pipeline\
`airflow dags unpause ${YOUR_DAG_NAME}`\
- NAN;_e.g. If your pipeline filename is xlsx\_to\_jsonld.py, unpause command should be "airflow dags unpause xlsx\_to\_jsonld"_\
+ \NAN;_e.g. If your pipeline filename is xlsx\_to\_jsonld.py, unpause command should be "airflow dags unpause xlsx\_to\_jsonld"_\
\
**NOTE:** If you are using Airflow webserver, you should be able to see your pipeline on http://localhost:8080 (or any other port you selected for the service) inside of "unpaused DAGS"
* **Registering the pipeline**
@@ -121,11 +114,11 @@ A **DAG** defines the execution order of tasks within a **pipeline**, while a **
* **Convert science paper PDFs to JSON-LD using a bibliographic ontology**\
Extract metadata from science paper PDFs, such as title, authors, publication date, and references, and convert the data into JSON-LD following a bibliographic ontology like BIBO. This allows for structured, machine-readable representation of academic papers for easier citation management and searchability.
* **Convert supply chain Excel documents to JSON-LD using GS1 standard ontology**\
- Parse supply chain-related data from Excel files (e.g., product lists, inventory records) and convert it into JSON-LD using the GS1 standard ontology.
+ Parse supply chain-related data from Excel files (e.g., product lists, inventory records) and convert it into JSON-LD using the GS1 standard ontology.
* **Convert images to JSON-LD using OCR**\
- Use Optical Character Recognition (OCR) to extract text and metadata from image files and represent it as JSON-LD.
+ Use Optical Character Recognition (OCR) to extract text and metadata from image files and represent it as JSON-LD.
* **Convert videos to Knowledge Assets by transcribing the audio and extracting key points**\
- Transcribe the audio from videos and extract key points or insights, then represent this information as JSON-LD knowledge assets.
+ Transcribe the audio from videos and extract key points or insights, then represent this information as JSON-LD knowledge assets.
* If you need to support a different file type:
* Create a new variable for the file type, e.g., `kmining_xlsx_pipeline_id`
* adapt the code in [Edge Node API - kMiningService](https://github.com/OriginTrail/edge-node-api/blob/main/services/kMiningService.js) to handle the new variable based on the input file's MIME type
@@ -153,7 +146,7 @@ The native query language for interacting with the DKG is SPARQL, as we use a tr
```
* **Creating your dRAG**
* The app currently contains two dRAGs as a demonstration of how natural language questions can be understood, processed, and answered using SPARQL and vector similarity search
- * Creating a new dRAG is basically creating a new API route in the app, and those steps are recommended but not mandatory: \
+ * Creating a new dRAG is basically creating a new API route in the app, and those steps are recommended but not mandatory:\
NOTE: (_you can create your own path as long as they are compatible with Edge Node interface, which also can be customized by your needs_)
* Create a new Controller in the controllers directory
* Create your dRAG method in Controller
@@ -176,8 +169,7 @@ The native query language for interacting with the DKG is SPARQL, as we use a tr
* **Feedback-loop-based SPARQL refinement:** Combine the LLM's natural language to SPARQL conversion with a feedback loop, in which the AI iteratively enhances the generated SPARQL queries, ensuring they align with the ontology and avoid errors.
* **Hybrid search — Combine vector and symbolic search:** Use a hybrid approach in which vector search (for semantic similarity) and symbolic search (e.g., SPARQL) work in tandem. Balancing structured queries with open-ended search results in this way can help ensure both accuracy and broad coverage.
* **Ontology-aware LLM fine-tuning:** Create a system to fine-tune a large language model (LLM) specifically on a given ontology. This approach involves providing the LLM with structured data from the ontology, including relationships, entities, and definitions, so it can learn to generate responses that align with the specific concepts and rules of the ontology. Then, use the trained model to formulate SPARQL queries based on the natural language.
-* You should now be ready to test your setup. Visit the Edge Node interface, go to the "AI Assistant" page, ask a question, and verify that your dRAG can answer it based on your custom logic.\
-
+* You should now be ready to test your setup. Visit the Edge Node interface, go to the "AI Assistant" page, ask a question, and verify that your dRAG can answer it based on your custom logic.\\
| Feature | dRAG | Pipeline |
| ----------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |