@@ -1412,7 +1412,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
14121412 JObject matches = FilterNodes ( state , nodes , frame ) ;
14131413 // get flags for current frame
14141414 bool embedOn = GetFrameFlag ( frame , "@embed" , state . embed ) ;
1415- bool explicicOn = GetFrameFlag ( frame , "@explicit" , state . @explicit ) ;
1415+ bool explicitOn = GetFrameFlag ( frame , "@explicit" , state . @explicit ) ;
14161416 // add matches to output
14171417 JArray ids = new JArray ( matches . GetKeys ( ) ) ;
14181418 ids . SortInPlace ( ) ;
@@ -1491,7 +1491,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
14911491 if ( ! frame . ContainsKey ( prop ) )
14921492 {
14931493 // if explicit is off, embed values
1494- if ( ! explicicOn )
1494+ if ( ! explicitOn )
14951495 {
14961496 EmbedValues ( state , element , prop , output ) ;
14971497 }
@@ -1502,8 +1502,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
15021502 foreach ( JToken item in value )
15031503 {
15041504 // recurse into list
1505- if ( ( item is JObject ) && ( ( JObject ) item ) . ContainsKey ( "@list"
1506- ) )
1505+ if ( ( item is JObject ) && ( ( JObject ) item ) . ContainsKey ( "@list" ) )
15071506 {
15081507 // add empty list
15091508 JObject list = new JObject ( ) ;
@@ -1763,8 +1762,7 @@ private static void AddFrameOutput(JsonLdApi.FramingContext state, JToken parent
17631762 {
17641763 if ( parent is JObject )
17651764 {
1766- JArray prop = ( JArray ) ( ( JObject ) parent ) [ property
1767- ] ;
1765+ JArray prop = ( JArray ) ( ( JObject ) parent ) [ property ] ;
17681766 if ( prop == null )
17691767 {
17701768 prop = new JArray ( ) ;
@@ -1797,8 +1795,22 @@ private void EmbedValues(JsonLdApi.FramingContext state, JObject element, string
17971795 foreach ( JToken o in objects )
17981796 {
17991797 var eachObj = o ;
1800- // handle subject reference
1801- if ( JsonLdUtils . IsNodeReference ( eachObj ) )
1798+
1799+ if ( eachObj is JObject && ( ( JObject ) eachObj ) . ContainsKey ( "@list" ) )
1800+ {
1801+ JObject list = new JObject { { "@list" , new JArray ( ) } } ;
1802+ if ( output is JArray )
1803+ {
1804+ ( ( JArray ) output ) . Add ( list ) ;
1805+ }
1806+ else
1807+ {
1808+ output [ property ] = new JArray ( list ) ;
1809+ }
1810+ EmbedValues ( state , ( JObject ) eachObj , "@list" , list [ "@list" ] ) ;
1811+ }
1812+ // handle subject reference
1813+ else if ( JsonLdUtils . IsNodeReference ( eachObj ) )
18021814 {
18031815 string sid = ( string ) ( ( JObject ) eachObj ) [ "@id" ] ;
18041816 // embed full subject if isn't already embedded
0 commit comments