// WriteFile is used to dump RDF from a Graph into a file func (g *Graph) WriteFile(file *os.File, mime string) error { serializerName := mimeSerializer[mime] if len(serializerName) == 0 { serializerName = "turtle" } serializer := crdf.NewSerializer(serializerName) defer serializer.Free() err := serializer.SetFile(file, g.uri) if err != nil { return err } ch := make(chan *crdf.Statement, 1024) go func() { for triple := range g.IterTriples() { ch <- &crdf.Statement{ Subject: term2C(triple.Subject), Predicate: term2C(triple.Predicate), Object: term2C(triple.Object), } } close(ch) }() serializer.AddN(ch) return nil }
// Serialize is used to serialize a graph based on a given mime type func (g *Graph) Serialize(mime string) (string, error) { if mime == "application/ld+json" { b, err := g.serializeJSONLd() return string(b), err } serializerName := mimeSerializer[mime] if len(serializerName) == 0 { serializerName = "turtle" } serializer := crdf.NewSerializer(serializerName) defer serializer.Free() ch := make(chan *crdf.Statement, 1024) go func() { for triple := range g.IterTriples() { ch <- &crdf.Statement{ Subject: term2C(triple.Subject), Predicate: term2C(triple.Predicate), Object: term2C(triple.Object), } } close(ch) }() return serializer.Serialize(ch, g.uri) }