diff --git a/exporter/exporter.go b/exporter/exporter.go index 8443df3..07e56a9 100644 --- a/exporter/exporter.go +++ b/exporter/exporter.go @@ -23,6 +23,25 @@ func (exp *Exporter) Count() int32 { return exp.count } +func (exp *Exporter) ExportNquad() { + it := exp.qstore.QuadsAllIterator() + for graph.Next(it) { + exp.count++ + quad := exp.qstore.Quad(it.Result()) + + exp.WriteEscString(quad.Subject) + exp.Write(" ") + exp.WriteEscString(quad.Predicate) + exp.Write(" ") + exp.WriteEscString(quad.Object) + if quad.Label != "" { + exp.Write(" ") + exp.WriteEscString(quad.Label) + } + exp.Write(" .\n") + } +} + func (exp *Exporter) ExportJson() { var jstr []byte exp.Write("[") diff --git a/internal/dump.go b/internal/dump.go index bf443f9..e43fe3f 100644 --- a/internal/dump.go +++ b/internal/dump.go @@ -28,7 +28,19 @@ func Dump(qs graph.QuadStore, outFile, typ string) error { if export.Err() != nil { return export.Err() } - export.ExportJson() + + switch typ { + case "nquad": + export.ExportNquad() + case "json": + export.ExportJson() + default: + return fmt.Errorf("unknown format %q", typ) + } + + if export.Err() != nil { + return export.Err() + } if outFile != "-" { fmt.Printf("%d entries were written\n", export.Count())