joseki

package module
v0.0.0-...-a35f667 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2016 License: MIT Imports: 1 Imported by: 0

README

joseki license GoDoc Build Status Coverage Status

Joseki is a pure Go library for working with RDF, a powerful framework for representing informations as graphs.

For more informations about RDF itself, please see https://www.w3.org/TR/rdf11-concepts

Features

Joseki provides the following features to work with RDF :

  • Structures to represent and manipulate the RDF model (URIs, Literals, Blank Nodes, Triples, etc)
  • RDF Graphs to store data, with several implentations provided.
  • A Low level API to query data stored in graphs.
  • A High level API to query data using the SPARQL 1.1 query language. (WIP - Unstable)
  • Query processing using modern techniques such as join ordering or optimized query execution plans.
  • Load RDF data stored in files in various formats (N-Triples, Turtle, etc) into any graph.

Getting Started

This package aims to work with RDF graphs, which are composed of RDF Triple {Subject Object Predicate}. Using joseki, you can represent an RDF Triple as followed :

import (
    "github.com/Callidon/joseki/rdf"
    "fmt"
)
subject := rdf.NewURI("http://example.org/book/book1")
predicate := rdf.NewURI("http://purl.org/dc/terms/title")
object := rdf.NewLiteral("Harry Potter and the Order of the Phoenix")
triple := rdf.NewTriple(subject, predicate, object)
fmt.Println(triple)
// Output : {<http://example.org/book/book1> <http://purl.org/dc/terms/title> "Harry Potter and the Order of the Phoenix"}

You can also store your RDF Triples in a RDF Graph, using various type of graphs. Here, we use a Tree Graph to store our triple :

import (
    "github.com/Callidon/joseki/rdf"
    "github.com/Callidon/joseki/graph"
)
subject := rdf.NewURI("http://example.org/book/book1")
predicate := rdf.NewURI("http://purl.org/dc/terms/title")
object := rdf.NewLiteral("Harry Potter and the Order of the Phoenix")
graph := graph.NewTreeGraph()
graph.Add(rdf.NewTriple(subject, predicate, object))

You can also query any triple from a RDF Graph, using a low level API or a SPARQL query.

import (
    "github.com/Callidon/joseki/rdf"
    "github.com/Callidon/joseki/graph"
    "fmt"
)
graph := graph.NewTreeGraph()
// Datas stored in a file can be easily loaded into a graph
graph.LoadFromFile("datas/awesome-books.ttl", "turtle")
// Let's fetch the titles of all the books in our graph !
subject := rdf.NewVariable("title")
predicate := rdf.NewURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
object := rdf.NewURI("https://schema.org/Book")
for bindings := range graph.Filter(subject, predicate, object) {
    fmt.Println(bindings)
}

For more informations about specific features, see the documentation

Documentation

Overview

Package joseki is a pure Go library for working with RDF, a powerful framework for representing informations as graphs. For more informations about RDF itself, please see https://www.w3.org/TR/rdf11-concepts

Features

Joseki provides the following features to work with RDF :

* Structures to represent and manipulate the RDF model (URIs, Literals, Blank Nodes, Triples, etc).

* RDF Graphs to store data, with several implentations provided.

* A Low level API to query data stored in graphs.

* A High level API to query data using the SPARQL 1.1 query language.

* Query processing using modern techniques such as join ordering or optimized query execution plans.

* Load RDF data stored in files in various formats (N-Triples, Turtle, etc) into any graph.

* Serialize a RDF Graph into various formats.

Getting Started

This package aims to work with RDF graphs, which are composed of RDF Triple {Subject Object Predicate}. Using joseki, you can represent an RDF Triple as followed :

import (
    "github.com/Callidon/joseki/rdf"
    "fmt"
)
subject := rdf.NewURI("http://example.org/book/book1")
predicate := rdf.NewURI("http://purl.org/dc/terms/title")
object := rdf.NewLiteral("Harry Potter and the Order of the Phoenix")
triple := rdf.NewTriple(subject, predicate, object)
fmt.Println(triple)
// Output : {<http://example.org/book/book1> <http://purl.org/dc/terms/title> "Harry Potter and the Order of the Phoenix"}

You can also store your RDF Triples in a RDF Graph, using various type of graphs. Here, we use a Tree Graph to store our triple :

import (
    "github.com/Callidon/joseki/rdf"
    "github.com/Callidon/joseki/graph"
)
subject := rdf.NewURI("http://example.org/book/book1")
predicate := rdf.NewURI("http://purl.org/dc/terms/title")
object := rdf.NewLiteral("Harry Potter and the Order of the Phoenix")
graph := graph.NewTreeGraph()
graph.Add(rdf.NewTriple(subject, predicate, object))

You can also query any triple from a RDF Graph, using a low level API or a SPARQL query.

import (
    "github.com/Callidon/joseki/rdf"
    "github.com/Callidon/joseki/graph"
    "fmt"
)
graph := graph.NewTreeGraph()
// Datas stored in a file can be easily loaded into a graph
graph.LoadFromFile("datas/awesome-books.ttl", "turtle")
// Let's fetch the titles of all the books in our graph !
subject := rdf.NewVariable("title")
predicate := rdf.NewURI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
object := rdf.NewURI("https://schema.org/Book")
for bindings := range graph.Filter(subject, predicate, object) {
    fmt.Println(bindings)
}

For more informations about specific features, see the documentation of each subpackage.

Author : Thomas Minier

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComingSoon

func ComingSoon()

Types

This section is empty.

Directories

Path Synopsis
Package graph provides various implementation for a RDF Graph
Package graph provides various implementation for a RDF Graph
Package parser provides parser to work with several RDF formats (N-Triples, Turtles, JSON-LD, ...) Package parser provides utilities to work with RDF based languages
Package parser provides parser to work with several RDF formats (N-Triples, Turtles, JSON-LD, ...) Package parser provides utilities to work with RDF based languages
Package rdf provides primitives to work with RDF
Package rdf provides primitives to work with RDF

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL