code: func MakeValue(qv quad.Value) *Value {
  	if qv == nil {
  		return nil
  	}
  	switch v := qv.(type) {
  	//case quad.Raw:
  	//	return &Value{&Value_Raw{[]byte(v)}}
  	case quad.String:
  		return &Value{&Value_Str{string(v)}}
  	case quad.IRI:
  		return &Value{&Value_Iri{string(v)}}
  	case quad.BNode:
  		return &Value{&Value_Bnode{string(v)}}
  	case quad.TypedString:
  		return &Value{&Value_TypedStr{&Value_TypedString{
  			Value: string(v.Value),
  			Type:  string(v.Type),
  		}}}
  	case quad.LangString:
  		return &Value{&Value_LangStr{&Value_LangString{
  			Value: string(v.Value),
  			Lang:  v.Lang,
  		}}}
  	case quad.Int:
  		return &Value{&Value_Int{int64(v)}}
  	case quad.Float:
  		return &Value{&Value_Float{float64(v)}}
  	case quad.Bool:
  		return &Value{&Value_Boolean{bool(v)}}
  	case quad.Time:
  		t := time.Time(v)
  		seconds := t.Unix()
  		nanos := int32(t.Sub(time.Unix(seconds, 0)))
  		return &Value{&Value_Time{&Value_Timestamp{
  			Seconds: seconds,
  			Nanos:   nanos,
  		}}}
  	default:
  		panic(fmt.Errorf("unsupported type: %T", qv))
  	}
  }
docs: //go:generate protoc --proto_path=$GOPATH/src:. --gogo_out=. quads.proto
  // MakeValue converts quad.Value to its protobuf representation.