Skip to content

Instantly share code, notes, and snippets.

@emgarten
Created February 26, 2020 01:52
Show Gist options
  • Save emgarten/595457532b9a0cc63a830041bb387a84 to your computer and use it in GitHub Desktop.
Save emgarten/595457532b9a0cc63a830041bb387a84 to your computer and use it in GitHub Desktop.
Example of using hexastore
using System;
using Hexastore.Processor;
using Hexastore.Resoner;
using Hexastore.Rocks;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
namespace HexaTest
{
class Program
{
static void Main(string[] args)
{
// Pre-req: install https://www.nuget.org/packages/Hexastore.Rocks/1.0.0-beta.5
var storeId = "test";
var rocksPath = @"e:\tmp\rockstest";
var factory = new LoggerFactory();
var logger = factory.CreateLogger<RocksGraphProvider>();
var storeLogger = factory.CreateLogger<StoreProcessor>();
var provider = new RocksGraphProvider(logger, rocksPath);
var storeProvider = new SetProvider(provider);
var storeProcessor = new StoreProcessor(storeProvider, new Reasoner(), storeLogger);
// Add device
var device1 = new JObject(new JProperty("id", "device1"),
new JProperty("type", "device"),
new JProperty("temp", 5));
var device2 = new JObject(new JProperty("id", "device2"),
new JProperty("type", "device"),
new JProperty("temp", 10));
storeProcessor.PatchJson(storeId, new JArray(device1, device2));
// Query
var query = new JObject(
new JProperty("filter", new JObject(
new JProperty("type", new JObject(
new JProperty("op", "eq"),
new JProperty("value", "device"))))));
var result = storeProcessor.Query(storeId, query, new string[] { }, 10);
// Display
Console.WriteLine(result.ToString());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment