Skip to content

Commit 5de4bca

Browse files
iddandennwc
authored andcommitted
jsonld: allow converting quad values to their json-ld equivalents
Signed-off-by: Iddan Aaronsohn <mail@aniddan.com>
1 parent cb29b84 commit 5de4bca

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

jsonld/jsonld.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,40 @@ func toTerm(v quad.Value) gojsonld.Term {
179179
}
180180
}
181181

182+
func typedStringToJSON(v quad.TypedString) map[string]string {
183+
return map[string]string{
184+
"@value": string(v.Value),
185+
"@type": string(v.Type),
186+
}
187+
}
188+
189+
// FromValue converts quad value to a JSON-LD compatible object.
190+
func FromValue(v quad.Value) interface{} {
191+
switch v := v.(type) {
192+
case quad.IRI:
193+
return map[string]string{
194+
"@id": string(v),
195+
}
196+
case quad.BNode:
197+
return map[string]string{
198+
"@id": v.String(),
199+
}
200+
case quad.String:
201+
return string(v)
202+
case quad.TypedString:
203+
return typedStringToJSON(v)
204+
case quad.LangString:
205+
return map[string]string{
206+
"@value": string(v.Value),
207+
"@language": string(v.Lang),
208+
}
209+
case quad.TypedStringer:
210+
return typedStringToJSON(v.TypedString())
211+
default:
212+
return v.String()
213+
}
214+
}
215+
182216
func toValue(t gojsonld.Term) quad.Value {
183217
switch t := t.(type) {
184218
case *gojsonld.Resource:

0 commit comments

Comments
 (0)