@@ -1412,7 +1412,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
1412
1412
JObject matches = FilterNodes ( state , nodes , frame ) ;
1413
1413
// get flags for current frame
1414
1414
bool embedOn = GetFrameFlag ( frame , "@embed" , state . embed ) ;
1415
- bool explicicOn = GetFrameFlag ( frame , "@explicit" , state . @explicit ) ;
1415
+ bool explicitOn = GetFrameFlag ( frame , "@explicit" , state . @explicit ) ;
1416
1416
// add matches to output
1417
1417
JArray ids = new JArray ( matches . GetKeys ( ) ) ;
1418
1418
ids . SortInPlace ( ) ;
@@ -1491,7 +1491,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
1491
1491
if ( ! frame . ContainsKey ( prop ) )
1492
1492
{
1493
1493
// if explicit is off, embed values
1494
- if ( ! explicicOn )
1494
+ if ( ! explicitOn )
1495
1495
{
1496
1496
EmbedValues ( state , element , prop , output ) ;
1497
1497
}
@@ -1502,8 +1502,7 @@ private void Frame(JsonLdApi.FramingContext state, JObject nodes
1502
1502
foreach ( JToken item in value )
1503
1503
{
1504
1504
// recurse into list
1505
- if ( ( item is JObject ) && ( ( JObject ) item ) . ContainsKey ( "@list"
1506
- ) )
1505
+ if ( ( item is JObject ) && ( ( JObject ) item ) . ContainsKey ( "@list" ) )
1507
1506
{
1508
1507
// add empty list
1509
1508
JObject list = new JObject ( ) ;
@@ -1763,8 +1762,7 @@ private static void AddFrameOutput(JsonLdApi.FramingContext state, JToken parent
1763
1762
{
1764
1763
if ( parent is JObject )
1765
1764
{
1766
- JArray prop = ( JArray ) ( ( JObject ) parent ) [ property
1767
- ] ;
1765
+ JArray prop = ( JArray ) ( ( JObject ) parent ) [ property ] ;
1768
1766
if ( prop == null )
1769
1767
{
1770
1768
prop = new JArray ( ) ;
@@ -1797,8 +1795,22 @@ private void EmbedValues(JsonLdApi.FramingContext state, JObject element, string
1797
1795
foreach ( JToken o in objects )
1798
1796
{
1799
1797
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 ) )
1802
1814
{
1803
1815
string sid = ( string ) ( ( JObject ) eachObj ) [ "@id" ] ;
1804
1816
// embed full subject if isn't already embedded
0 commit comments