diff --git a/quad/quad.go b/quad/quad.go index 0b6861e43..945ade4f5 100644 --- a/quad/quad.go +++ b/quad/quad.go @@ -70,16 +70,16 @@ func Make(subject, predicate, object, label interface{}) (q Quad) { // Deprecated: use Make pr MakeIRI instead. func MakeRaw(subject, predicate, object, label string) (q Quad) { if subject != "" { - q.Subject = StringToValue(subject) + q.Subject = Raw(subject) } if predicate != "" { - q.Predicate = StringToValue(predicate) + q.Predicate = Raw(predicate) } if object != "" { - q.Object = StringToValue(object) + q.Object = Raw(object) } if label != "" { - q.Label = StringToValue(label) + q.Label = Raw(label) } return } diff --git a/quad/value.go b/quad/value.go index 4626d83ed..f5f596a7f 100644 --- a/quad/value.go +++ b/quad/value.go @@ -124,8 +124,6 @@ func StringToValue(v string) Value { if len(v) > 2 { if v[0] == '<' && v[len(v)-1] == '>' { return IRI(v[1 : len(v)-1]) - } else if v[0] == '"' && v[len(v)-1] == '"' { - return String(v[1 : len(v)-1]) } else if v[:2] == "_:" { return BNode(v[2:]) } else if i := strings.Index(v, `"^^<`); i > 0 && v[0] == '"' && v[len(v)-1] == '>' { @@ -149,6 +147,9 @@ func ToString(v Value) string { // // Deprecated: use IRI or String instead. func Raw(s string) Value { + if len(s) >= 2 && s[0] == '"' && s[len(s)-1] == '"' { + return String(s[1 : len(s)-1]) + } return StringToValue(s) }