Revision edf84ac2a1afbc3217ea98a622520c9e6cdf541f authored by Iddan Aaronsohn on 17 October 2019, 20:01:24 UTC, committed by Iddan Aaronsohn on 08 November 2019, 15:16:12 UTC
1 parent ce2e8e0
quickstart-as-lib.md
# Quickstart as Library
Currently, Cayley supports being used as a Go library for other projects. To use it in such a way, here's a quick example:
```go
package main
import (
"fmt"
"log"
"github.com/cayleygraph/cayley"
"github.com/cayleygraph/quad"
)
func main() {
// Create a brand new graph
store, err := cayley.NewMemoryGraph()
if err != nil {
log.Fatalln(err)
}
store.AddQuad(quad.Make("phrase of the day", "is of course", "Hello World!", nil))
// Now we create the path, to get to our data
p := cayley.StartPath(store, quad.String("phrase of the day")).Out(quad.String("is of course"))
// Now we iterate over results. Arguments:
// 1. Optional context used for cancellation.
// 2. Flag to optimize query before execution.
// 3. Quad store, but we can omit it because we have already built path with it.
err = p.Iterate(nil).EachValue(nil, func(value quad.Value){
nativeValue := quad.NativeOf(value) // this converts RDF values to normal Go types
fmt.Println(nativeValue)
})
if err != nil {
log.Fatalln(err)
}
}
```
To use other backends, you can empty-import them, eg
```go
import _ "github.com/cayleygraph/cayley/graph/kv/bolt"
```
And use them with a call like
```go
import "github.com/cayleygraph/cayley/graph"
func open() {
// Initialize the database
graph.InitQuadStore("bolt", path, nil)
// Open and use the database
cayley.NewGraph("bolt", path, nil)
}
```
More runnable examples are available in [examples](https://github.com/cayleygraph/cayley/tree/87c9c341848b59924a054ebc2dd0f2bf8c57c6a9/examples/README.md) folder.
Computing file changes ...