---
title: Examples
description: Interactive code examples and playground
---

import { CodePlayground } from '../../components';

# Interactive Examples

Learn UNRDF by doing. All examples are executable in your browser.

## Basic Examples

### Create Your First Quad

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { dataFactory } from '@unrdf/core';

const quad = dataFactory.quad(
  dataFactory.namedNode('http://example.org/alice'),
  dataFactory.namedNode('http://xmlns.com/foaf/0.1/knows'),
  dataFactory.namedNode('http://example.org/bob')
);

console.log('Subject:', quad.subject.value);
console.log('Predicate:', quad.predicate.value);
console.log('Object:', quad.object.value);
```
</CodePlayground>

---

### Query a Store

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { createStore, dataFactory } from '@unrdf/core';

const store = createStore();
const { namedNode, quad } = dataFactory;

// Add some data
const alice = namedNode('http://example.org/alice');
const knows = namedNode('http://xmlns.com/foaf/0.1/knows');

store.add(quad(alice, knows, namedNode('http://example.org/bob')));
store.add(quad(alice, knows, namedNode('http://example.org/charlie')));

// Query: Who does Alice know?
const results = store.match(alice, knows, null);

console.log('Alice knows:');
for (const q of results) {
  console.log('-', q.object.value);
}
```
</CodePlayground>

---

### Work with Literals

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { dataFactory } from '@unrdf/core';

// String literal with language tag
const greeting = dataFactory.literal('Hello', 'en');
console.log('Value:', greeting.value);
console.log('Language:', greeting.language);

// Typed literal (integer)
const age = dataFactory.literal(30);
console.log('Age:', age.value);

// Typed literal (date)
const date = dataFactory.literal(
  '2025-01-01',
  dataFactory.namedNode('http://www.w3.org/2001/XMLSchema#date')
);
console.log('Date:', date.value);
```
</CodePlayground>

---

### Blank Nodes

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { createStore, dataFactory } from '@unrdf/core';

const store = createStore();
const { namedNode, blankNode, literal, quad } = dataFactory;

// Create a blank node (anonymous resource)
const person = blankNode();

// Add properties
const name = namedNode('http://xmlns.com/foaf/0.1/name');
const age = namedNode('http://xmlns.com/foaf/0.1/age');

store.add(quad(person, name, literal('Alice')));
store.add(quad(person, age, literal(30)));

console.log('Blank node ID:', person.value);
console.log('Store size:', store.size);
```
</CodePlayground>

---

## Advanced Examples

### Build a Knowledge Graph

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { createStore, dataFactory } from '@unrdf/core';

const store = createStore();
const { namedNode, literal, quad } = dataFactory;

// Define vocabulary helpers
const ex = (t) => namedNode(`http://example.org/${t}`);
const foaf = (t) => namedNode(`http://xmlns.com/foaf/0.1/${t}`);

// People
const people = [
  { id: 'alice', name: 'Alice', age: 30 },
  { id: 'bob', name: 'Bob', age: 25 },
  { id: 'charlie', name: 'Charlie', age: 35 },
];

// Add people to graph
people.forEach((p) => {
  const person = ex(p.id);
  store.add(quad(person, foaf('name'), literal(p.name)));
  store.add(quad(person, foaf('age'), literal(p.age)));
});

// Add relationships
store.add(quad(ex('alice'), foaf('knows'), ex('bob')));
store.add(quad(ex('alice'), foaf('knows'), ex('charlie')));
store.add(quad(ex('bob'), foaf('knows'), ex('charlie')));

console.log(`Knowledge graph with ${store.size} quads`);

// Find people over 28
console.log('\\nPeople over 28:');
for (const quad of store.match(null, foaf('age'), null)) {
  if (parseInt(quad.object.value) > 28) {
    const nameQuads = store.match(quad.subject, foaf('name'), null);
    for (const nq of nameQuads) {
      console.log(`- ${nq.object.value} (${quad.object.value})`);
    }
  }
}
```
</CodePlayground>

---

### Validation with Zod

<CodePlayground runtime="browser" package="@unrdf/core">
```javascript
import { dataFactory, QuadSchema } from '@unrdf/core';

// Valid quad
const validQuad = dataFactory.quad(
  dataFactory.namedNode('http://example.org/s'),
  dataFactory.namedNode('http://example.org/p'),
  dataFactory.literal('o')
);

const result1 = QuadSchema.safeParse(validQuad);
console.log('Valid quad:', result1.success);

// Invalid quad (null subject)
const invalidQuad = {
  subject: null,
  predicate: dataFactory.namedNode('http://example.org/p'),
  object: dataFactory.literal('o'),
};

const result2 = QuadSchema.safeParse(invalidQuad);
console.log('Invalid quad:', result2.success);
if (!result2.success) {
  console.log('Error:', result2.error.issues[0].message);
}
```
</CodePlayground>

---

## More Examples

- [Tutorial: Build a Knowledge Graph](/guides/tutorials/build-knowledge-graph)
- [Recipe: Migrate from N3](/examples/recipes/migrate-from-n3)
- [Advanced: Reasoning Engine](/examples/advanced/reasoning-engine)

---

## Playground

Want to experiment freely? Try the [full playground](/playground) with:
- Multi-file editing
- NPM package imports
- Full console access
- Export/share code
