A (Very) Quick Start

Work with, store and query RDF easily and intuitively. With Ingenious, writing and storing RDF is as simple as doing the following:

using Ingenious.Core;

// Declare namespaces
NamespaceUri ldtNs = new NamespaceUri("http://www.linkeddatatools.com", "ld");
NamespaceUri tpsNs = new NamespaceUri("http://www.mytestpredicates.com", "tp");

// Create a graph
Graph<Guid> graph = graphProxy.GetGraph("TestGraph");

// Create some nodes
dynamic node = graph.GetNode(ldtNs, "example1");
dynamic node2 = graph.GetNode(ldtNs, "example2");
dynamic node3 = graph.GetNode(ldtNs, "example3");

// Set some predicates (in the tp: namespace)
using (new NamespaceUriScope(tpsNs))
    node.testProperty = "hello";
    node.testProperty2 = node2;
    node2.childTestProperty = node3;

The above code has defined (and stored in memory) the following graph in triple notation:

@prefix ld: <http://www.linkeddatatools.com/> .
@prefix tp: <http://www.mytestpredicates.com/> .

ld:example1 tp:testProperty "hello" .
ld:example1 tp:testProperty2 ld:example2 .
ld:example2 tp:childTestProperty ld:example3 .

New to RDF? Start with our acclaimed starter tutorials http://www.linkeddatatools.com/semantic-web-basics.

Planned Documentation: API Reference, plus usage examples.

  • Basics of creating an Ingenious node model (the Graph<T> and Node<T> core classes).
  • Node<T> as a container of triples with equal subject URI.
  • Delay loading of referenced object nodes, and graph storage (GraphStore<T> class).
  • Serializing an Ingenious node model to RDF/XML and Turtle.
  • The weak triple cache (WeakTripleCache<T> class).
  • Automatic dynamic property name generation on nodes from predicates (two-way process) and predicate URI transformation scope for generating predicate URIs from property names (mapping of predicate URIs to property names).
  • Deriving classes from Node<T>, and how static properties (defined at compile time) are treated in much the same way.
  • Creating Ingenious node models by wrapping POCOs (plain old CLR objects), including POCO types that have been generated or attributed using LinqToOwl.
  • Loading an RDF model into an Ingenious node model.
  • Persisting a node model to a data provider (e.g. Mongo DB, Raven DB, in-memory).
  • Write and read transaction scopes (using Ingenious models on concurrently executing threads).
  • Querying an Ingenious node model using SPARQL.
  • Ingenious MVVM helper framework and building Ingenious MVVM apps.

Last edited Aug 18, 2013 at 7:03 PM by linkeddatatools, version 75


No comments yet.