Add deep tree framing input test, use @graph for framing output.
authorDave Longley <dlongley@digitalbazaar.com>
Sun, 15 Apr 2012 18:41:02 -0400
changeset 518 ebe95ba2fefa
parent 517 6934510a7a89
child 519 0dc0ed3355cf
Add deep tree framing input test, use @graph for framing output.
test-suite/tests/frame-0001-out.jsonld
test-suite/tests/frame-0002-out.jsonld
test-suite/tests/frame-0003-out.jsonld
test-suite/tests/frame-0004-out.jsonld
test-suite/tests/frame-0005-out.jsonld
test-suite/tests/frame-0006-out.jsonld
test-suite/tests/frame-0007-out.jsonld
test-suite/tests/frame-0008-out.jsonld
test-suite/tests/frame-0009-out.jsonld
test-suite/tests/frame-0010-out.jsonld
test-suite/tests/frame-0011-out.jsonld
test-suite/tests/frame-0012-out.jsonld
test-suite/tests/frame-0013-out.jsonld
test-suite/tests/frame-0014-out.jsonld
test-suite/tests/frame-0015-out.jsonld
test-suite/tests/frame-0016-out.jsonld
test-suite/tests/frame-0017-frame.jsonld
test-suite/tests/frame-0017-in.jsonld
test-suite/tests/frame-0017-out.jsonld
test-suite/tests/frame-manifest.jsonld
--- a/test-suite/tests/frame-0001-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0001-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,20 +1,22 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:description": "Fun",
-      "dc:title": "Chapter One"
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One"
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0002-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0002-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,21 +1,23 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:description": "Fun",
-      "dc:title": "Chapter One",
-      "ex:act": "ex:ActOne"
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One",
+        "ex:act": "ex:ActOne"
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0003-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0003-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,1 +1,7 @@
-[]
\ No newline at end of file
+{
+  "@context": {
+    "dc": "http://purl.org/dc/elements/1.1/",
+    "ex": "http://example.org/vocab#"
+  },
+  "@graph": []
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0004-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0004-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,21 +1,23 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#",
     "ex:contains": {"@type": "@id"}
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:description": "Fun",
-      "dc:title": "Chapter One"
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One"
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0005-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0005-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,19 +1,21 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:title": "Chapter One",
-      "ex:null": null
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:title": "Chapter One",
+        "ex:null": null
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0006-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0006-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,20 +1,22 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:description": "Fun",
-      "dc:title": "Chapter One"
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One"
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0007-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0007-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,23 +1,25 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": [
-    "ex:Library",
-    "ex:Building"
-  ],
-  "ex:contains": {
-    "@id": "http://example.org/test#book",
-    "@type": "ex:Book",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book",
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": [
+      "ex:Library",
+      "ex:Building"
+    ],
     "ex:contains": {
-      "@id": "http://example.org/test#chapter",
-      "@type": "ex:Chapter",
-      "dc:description": "Fun",
-      "dc:title": "Chapter One"
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One"
+      }
     }
-  }
-}]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0008-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0008-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,4 +1,4 @@
-[{
+{
   "@context": {
     "ex": "http://example.org/vocab#",
     "ex:embedded": {"@container": "@set"},
@@ -6,33 +6,35 @@
     "ex:mixed": {"@container": "@set"},
     "ex:single": {"@container": "@set"}
   },
-  "@id": "http://example.org/test/#example",
-  "@type": "ex:Example",
-  "ex:embedded": [
-    {
-      "@id": "http://example.org/test#subject1",
-      "ex:prop": "property"
-    }
-  ],
-  "ex:literal": [
-    "str1",
-    "str2",
-    "str3"
-  ],
-  "ex:mixed": [
-    {
-      "@id": "http://example.org/test#iri1"
-    },
-    "literal1",
-    {
-      "@id": "http://example.org/test#iri2"
-    },
-    "literal2",
-    {
-      "@id": "http://example.org/test#subject2"
-    }
-  ],
-  "ex:single": [
-    "single"
-  ]
-}]
\ No newline at end of file
+  "@graph": [{
+    "@id": "http://example.org/test/#example",
+    "@type": "ex:Example",
+    "ex:embedded": [
+      {
+        "@id": "http://example.org/test#subject1",
+        "ex:prop": "property"
+      }
+    ],
+    "ex:literal": [
+      "str1",
+      "str2",
+      "str3"
+    ],
+    "ex:mixed": [
+      {
+        "@id": "http://example.org/test#iri1"
+      },
+      "literal1",
+      {
+        "@id": "http://example.org/test#iri2"
+      },
+      "literal2",
+      {
+        "@id": "http://example.org/test#subject2"
+      }
+    ],
+    "ex:single": [
+      "single"
+    ]
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0009-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0009-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,18 +1,20 @@
-[{
+{
   "@context": {
     "ex": "http://example.org/vocab#",
     "ex:p7": {"@container": "@set"}
   },
-  "@id": "http://example.org/test/#example1",
-  "@type": "ex:Example1",
-  "ex:p1": "non-default",
-  "ex:p2": "custom-default",
-  "ex:p3": 3,
-  "ex:p5": null,
-  "ex:p6": {
-    "@id": "http://example.org/test/#example2",
-    "@type": "ex:Example2",
-    "ex:p3": 4
-  },
-  "ex:p7": []
-}]
\ No newline at end of file
+  "@graph": [{
+    "@id": "http://example.org/test/#example1",
+    "@type": "ex:Example1",
+    "ex:p1": "non-default",
+    "ex:p2": "custom-default",
+    "ex:p3": 3,
+    "ex:p5": null,
+    "ex:p6": {
+      "@id": "http://example.org/test/#example2",
+      "@type": "ex:Example2",
+      "ex:p3": 4
+    },
+    "ex:p7": []
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0010-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0010-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,4 +1,4 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/terms/",
     "dc:creator": {
@@ -7,7 +7,9 @@
     "foaf": "http://xmlns.com/foaf/0.1/",
     "ps": "http://purl.org/payswarm#"
   },
-  "@id": "http://example.com/asset",
-  "@type": "ps:Asset",
-  "dc:creator": null
-}]
\ No newline at end of file
+  "@graph": [{
+    "@id": "http://example.com/asset",
+    "@type": "ps:Asset",
+    "dc:creator": null
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0011-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0011-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,14 +1,16 @@
-[{
+{
   "@context": {
     "ex": "http://www.example.com/#"
   },
-  "@id": "ex:subject",
-  "@type": "ex:Thing",
-  "ex:embed": {
-    "@id": "ex:embedded",
-    "ex:title": "Embedded"
-  },
-  "ex:noembed": {
-    "@id": "ex:notembedded"
-  }
-}]
\ No newline at end of file
+  "@graph": [{
+    "@id": "ex:subject",
+    "@type": "ex:Thing",
+    "ex:embed": {
+      "@id": "ex:embedded",
+      "ex:title": "Embedded"
+    },
+    "ex:noembed": {
+      "@id": "ex:notembedded"
+    }
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0012-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0012-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,24 +1,20 @@
-[
-  {
-    "@context": {
-      "sp": "http://smartplatforms.org/terms#"
-    },
+{
+  "@context": {
+    "sp": "http://smartplatforms.org/terms#"
+  },
+  "@graph": [{
     "@id": "http://example.org/med-1",
     "@type": "sp:Medication",
     "sp:hasFulfillment": {
       "@id": "http://example.org/fill-1"
     },
     "sp:label": "Lisinopril"
-  },
-  {
-    "@context": {
-      "sp": "http://smartplatforms.org/terms#"
-    },
+  }, {
     "@id": "http://example.org/fill-1",
     "@type": "sp:Fulfillment",
     "sp:hasMedication": {
       "@id": "http://example.org/med-1"
     },
     "sp:label": "30 pills on 2/2/2011"
-  }
-]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0013-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0013-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,8 +1,8 @@
-[
-  {
-    "@context": {
-      "ex": "http://example.org/"
-    },
+{
+  "@context": {
+    "ex": "http://example.org/"
+  },
+  "@graph": [{
     "@id": "ex:looker",
     "ex:canSee": [
       {
@@ -12,17 +12,9 @@
         "@id": "ex:spotted"
       }
     ]
-  },
-  {
-    "@context": {
-      "ex": "http://example.org/"
-    },
+  }, {
     "@id": "ex:forgotten"
-  },
-  {
-    "@context": {
-      "ex": "http://example.org/"
-    },
+  }, {
     "@id": "ex:spotted"
-  }
-]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0014-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0014-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,23 +1,24 @@
-[
-  {
-    "@context": {
-      "ex": "http://example.org/"
-    },
+{
+  "@context": {
+    "ex": "http://example.org/"
+  },
+  "@graph": [{
     "@id": "ex:a",
     "@type": "ex:Node",
     "ex:sees": {
-      "@id": "ex:b"
+      "@id": "ex:b",
+      "@type": "ex:Node",
+      "ex:sees": {
+        "@id": "_:t0",
+        "ex:remember_me": "This value should not disappear."
+      }
     }
-  },
-  {
-    "@context": {
-      "ex": "http://example.org/"
-    },
+  }, {
     "@id": "ex:b",
     "@type": "ex:Node",
     "ex:sees": {
       "@id": "_:t0",
       "ex:remember_me": "This value should not disappear."
     }
-  }
-]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0015-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0015-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,167 +1,113 @@
-[
-  {
-    "@context": {
-      "api": "http://smartplatforms.org/terms/api#",
-      "dcterms": "http://purl.org/dc/terms/",
-      "foaf": "http://xmlns.com/foaf/0.1/",
-      "owl": "http://www.w3.org/2002/07/owl#",
-      "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
-      "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
-      "sp": "http://smartplatforms.org/terms#",
-      "sp:abnormalInterpretation": {"@type": "@id"},
-      "sp:address": {"@type": "@id"},
-      "sp:alertLevel": {"@type": "@id"},
-      "sp:allergicReaction": {"@type": "@id"},
-      "sp:allergyExclusionName": {"@type": "@id"},
-      "sp:belongsTo": {"@type": "@id"},
-      "sp:bloodPressure": {"@type": "@id"},
-      "sp:bodyMassIndex": {"@type": "@id"},
-      "sp:bodyPosition": {"@type": "@id"},
-      "sp:bodySite": {"@type": "@id"},
-      "sp:category": {"@type": "@id"},
-      "sp:code": {"@type": "@id"},
-      "sp:created": {"@type": "@id"},
-      "sp:denominator": {"@type": "@id"},
-      "sp:diastolic": {"@type": "@id"},
-      "sp:drugAllergen": {"@type": "@id"},
-      "sp:drugClass": {"@type": "@id"},
-      "sp:drugClassAllergen": {"@type": "@id"},
-      "sp:drugName": {"@type": "@id"},
-      "sp:encounter": {"@type": "@id"},
-      "sp:encounterType": {"@type": "@id"},
-      "sp:facility": {"@type": "@id"},
-      "sp:foodAllergen": {"@type": "@id"},
-      "sp:frequency": {"@type": "@id"},
-      "sp:fulfillment": {"@type": "@id"},
-      "sp:hasStatement": {"@type": "@id"},
-      "sp:heartRate": {"@type": "@id"},
-      "sp:height": {"@type": "@id"},
-      "sp:labName": {"@type": "@id"},
-      "sp:labResult": {"@type": "@id"},
-      "sp:labSpecimenCollected": {"@type": "@id"},
-      "sp:labStatus": {"@type": "@id"},
-      "sp:maximum": {"@type": "@id"},
-      "sp:medicalRecordNumber": {"@type": "@id"},
-      "sp:medication": {"@type": "@id"},
-      "sp:method": {"@type": "@id"},
-      "sp:minimum": {"@type": "@id"},
-      "sp:narrativeResult": {"@type": "@id"},
-      "sp:nominalResult": {"@type": "@id"},
-      "sp:nonCriticalRange": {"@type": "@id"},
-      "sp:normalRange": {"@type": "@id"},
-      "sp:numerator": {"@type": "@id"},
-      "sp:ordinalResult": {"@type": "@id"},
-      "sp:organization": {"@type": "@id"},
-      "sp:oxygenSaturation": {"@type": "@id"},
-      "sp:participant": {"@type": "@id"},
-      "sp:person": {"@type": "@id"},
-      "sp:pharmacy": {"@type": "@id"},
-      "sp:problemName": {"@type": "@id"},
-      "sp:provenance": {"@type": "@id"},
-      "sp:provider": {"@type": "@id"},
-      "sp:quantitativeResult": {"@type": "@id"},
-      "sp:quantity": {"@type": "@id"},
-      "sp:quantityDispensed": {"@type": "@id"},
-      "sp:respiratoryRate": {"@type": "@id"},
-      "sp:severity": {"@type": "@id"},
-      "sp:specimenCollected": {"@type": "@id"},
-      "sp:systolic": {"@type": "@id"},
-      "sp:temperature": {"@type": "@id"},
-      "sp:translationFidelity": {"@type": "@id"},
-      "sp:valueAndUnit": {"@type": "@id"},
-      "sp:vitalName": {"@type": "@id"},
-      "sp:weight": {"@type": "@id"},
-      "spcode": "http://smartplatforms.org/terms/codes/",
-      "vcard": "http://www.w3.org/2006/vcard/ns#",
-      "vcard:adr": {"@type": "@id"},
-      "vcard:n": {"@type": "@id"},
-      "vcard:tel": {"@type": "@id"}    
-    },
+{
+  "@context": {
+    "api": "http://smartplatforms.org/terms/api#",
+    "dcterms": "http://purl.org/dc/terms/",
+    "foaf": "http://xmlns.com/foaf/0.1/",
+    "owl": "http://www.w3.org/2002/07/owl#",
+    "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
+    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
+    "sp": "http://smartplatforms.org/terms#",
+    "sp:abnormalInterpretation": {"@type": "@id"},
+    "sp:address": {"@type": "@id"},
+    "sp:alertLevel": {"@type": "@id"},
+    "sp:allergicReaction": {"@type": "@id"},
+    "sp:allergyExclusionName": {"@type": "@id"},
+    "sp:belongsTo": {"@type": "@id"},
+    "sp:bloodPressure": {"@type": "@id"},
+    "sp:bodyMassIndex": {"@type": "@id"},
+    "sp:bodyPosition": {"@type": "@id"},
+    "sp:bodySite": {"@type": "@id"},
+    "sp:category": {"@type": "@id"},
+    "sp:code": {"@type": "@id"},
+    "sp:created": {"@type": "@id"},
+    "sp:denominator": {"@type": "@id"},
+    "sp:diastolic": {"@type": "@id"},
+    "sp:drugAllergen": {"@type": "@id"},
+    "sp:drugClass": {"@type": "@id"},
+    "sp:drugClassAllergen": {"@type": "@id"},
+    "sp:drugName": {"@type": "@id"},
+    "sp:encounter": {"@type": "@id"},
+    "sp:encounterType": {"@type": "@id"},
+    "sp:facility": {"@type": "@id"},
+    "sp:foodAllergen": {"@type": "@id"},
+    "sp:frequency": {"@type": "@id"},
+    "sp:fulfillment": {"@type": "@id"},
+    "sp:hasStatement": {"@type": "@id"},
+    "sp:heartRate": {"@type": "@id"},
+    "sp:height": {"@type": "@id"},
+    "sp:labName": {"@type": "@id"},
+    "sp:labResult": {"@type": "@id"},
+    "sp:labSpecimenCollected": {"@type": "@id"},
+    "sp:labStatus": {"@type": "@id"},
+    "sp:maximum": {"@type": "@id"},
+    "sp:medicalRecordNumber": {"@type": "@id"},
+    "sp:medication": {"@type": "@id"},
+    "sp:method": {"@type": "@id"},
+    "sp:minimum": {"@type": "@id"},
+    "sp:narrativeResult": {"@type": "@id"},
+    "sp:nominalResult": {"@type": "@id"},
+    "sp:nonCriticalRange": {"@type": "@id"},
+    "sp:normalRange": {"@type": "@id"},
+    "sp:numerator": {"@type": "@id"},
+    "sp:ordinalResult": {"@type": "@id"},
+    "sp:organization": {"@type": "@id"},
+    "sp:oxygenSaturation": {"@type": "@id"},
+    "sp:participant": {"@type": "@id"},
+    "sp:person": {"@type": "@id"},
+    "sp:pharmacy": {"@type": "@id"},
+    "sp:problemName": {"@type": "@id"},
+    "sp:provenance": {"@type": "@id"},
+    "sp:provider": {"@type": "@id"},
+    "sp:quantitativeResult": {"@type": "@id"},
+    "sp:quantity": {"@type": "@id"},
+    "sp:quantityDispensed": {"@type": "@id"},
+    "sp:respiratoryRate": {"@type": "@id"},
+    "sp:severity": {"@type": "@id"},
+    "sp:specimenCollected": {"@type": "@id"},
+    "sp:systolic": {"@type": "@id"},
+    "sp:temperature": {"@type": "@id"},
+    "sp:translationFidelity": {"@type": "@id"},
+    "sp:valueAndUnit": {"@type": "@id"},
+    "sp:vitalName": {"@type": "@id"},
+    "sp:weight": {"@type": "@id"},
+    "spcode": "http://smartplatforms.org/terms/codes/",
+    "vcard": "http://www.w3.org/2006/vcard/ns#",
+    "vcard:adr": {"@type": "@id"},
+    "vcard:n": {"@type": "@id"},
+    "vcard:tel": {"@type": "@id"}    
+  },
+  "@graph": [{
     "@id": "http://localhost:7000/records/999888",
     "@type": "sp:MedicalRecord",
-    "sp:hasStatement": "http://localhost:7000/records/999888/vital_signs/c9ddca3e-3df8-4f13-9a16-eecd80aa8ff6"
-  },
-  {
-    "@context": {
-      "api": "http://smartplatforms.org/terms/api#",
-      "dcterms": "http://purl.org/dc/terms/",
-      "foaf": "http://xmlns.com/foaf/0.1/",
-      "owl": "http://www.w3.org/2002/07/owl#",
-      "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
-      "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
-      "sp": "http://smartplatforms.org/terms#",
-      "sp:abnormalInterpretation": {"@type": "@id"},
-      "sp:address": {"@type": "@id"},
-      "sp:alertLevel": {"@type": "@id"},
-      "sp:allergicReaction": {"@type": "@id"},
-      "sp:allergyExclusionName": {"@type": "@id"},
-      "sp:belongsTo": {"@type": "@id"},
-      "sp:bloodPressure": {"@type": "@id"},
-      "sp:bodyMassIndex": {"@type": "@id"},
-      "sp:bodyPosition": {"@type": "@id"},
-      "sp:bodySite": {"@type": "@id"},
-      "sp:category": {"@type": "@id"},
-      "sp:code": {"@type": "@id"},
-      "sp:created": {"@type": "@id"},
-      "sp:denominator": {"@type": "@id"},
-      "sp:diastolic": {"@type": "@id"},
-      "sp:drugAllergen": {"@type": "@id"},
-      "sp:drugClass": {"@type": "@id"},
-      "sp:drugClassAllergen": {"@type": "@id"},
-      "sp:drugName": {"@type": "@id"},
-      "sp:encounter": {"@type": "@id"},
-      "sp:encounterType": {"@type": "@id"},
-      "sp:facility": {"@type": "@id"},
-      "sp:foodAllergen": {"@type": "@id"},
-      "sp:frequency": {"@type": "@id"},
-      "sp:fulfillment": {"@type": "@id"},
-      "sp:hasStatement": {"@type": "@id"},
-      "sp:heartRate": {"@type": "@id"},
-      "sp:height": {"@type": "@id"},
-      "sp:labName": {"@type": "@id"},
-      "sp:labResult": {"@type": "@id"},
-      "sp:labSpecimenCollected": {"@type": "@id"},
-      "sp:labStatus": {"@type": "@id"},
-      "sp:maximum": {"@type": "@id"},
-      "sp:medicalRecordNumber": {"@type": "@id"},
-      "sp:medication": {"@type": "@id"},
-      "sp:method": {"@type": "@id"},
-      "sp:minimum": {"@type": "@id"},
-      "sp:narrativeResult": {"@type": "@id"},
-      "sp:nominalResult": {"@type": "@id"},
-      "sp:nonCriticalRange": {"@type": "@id"},
-      "sp:normalRange": {"@type": "@id"},
-      "sp:numerator": {"@type": "@id"},
-      "sp:ordinalResult": {"@type": "@id"},
-      "sp:organization": {"@type": "@id"},
-      "sp:oxygenSaturation": {"@type": "@id"},
-      "sp:participant": {"@type": "@id"},
-      "sp:person": {"@type": "@id"},
-      "sp:pharmacy": {"@type": "@id"},
-      "sp:problemName": {"@type": "@id"},
-      "sp:provenance": {"@type": "@id"},
-      "sp:provider": {"@type": "@id"},
-      "sp:quantitativeResult": {"@type": "@id"},
-      "sp:quantity": {"@type": "@id"},
-      "sp:quantityDispensed": {"@type": "@id"},
-      "sp:respiratoryRate": {"@type": "@id"},
-      "sp:severity": {"@type": "@id"},
-      "sp:specimenCollected": {"@type": "@id"},
-      "sp:systolic": {"@type": "@id"},
-      "sp:temperature": {"@type": "@id"},
-      "sp:translationFidelity": {"@type": "@id"},
-      "sp:valueAndUnit": {"@type": "@id"},
-      "sp:vitalName": {"@type": "@id"},
-      "sp:weight": {"@type": "@id"},
-      "spcode": "http://smartplatforms.org/terms/codes/",
-      "vcard": "http://www.w3.org/2006/vcard/ns#",
-      "vcard:adr": {"@type": "@id"},
-      "vcard:n": {"@type": "@id"},
-      "vcard:tel": {"@type": "@id"}  
-    },
+    "sp:hasStatement": {
+      "@id": "http://localhost:7000/records/999888/vital_signs/c9ddca3e-3df8-4f13-9a16-eecd80aa8ff6",
+      "sp:bloodPressure": {
+        "@id": "_:t2",
+        "@type": "sp:BloodPressure",
+        "sp:systolic": {
+          "@id": "_:t0",
+          "@type": "sp:VitalSign",
+          "sp:vitalName": {
+            "@id": "_:t1",
+            "dcterms:title": "Systolic blood pressure",
+            "@type": "sp:CodedValue",
+            "sp:code": "http://loinc.org/codes/8480-6"
+          },
+          "sp:value": "111.226458141",
+          "sp:unit": "mm[Hg]"
+        }
+      },
+      "@type": "sp:VitalSigns",
+      "sp:belongsTo": "http://localhost:7000/records/999888"
+    }
+  }, {
     "@id": "http://localhost:7000/records/999888/vital_signs/c9ddca3e-3df8-4f13-9a16-eecd80aa8ff6",
     "@type": "sp:VitalSigns",
-    "sp:belongsTo": "http://localhost:7000/records/999888",
+    "sp:belongsTo": {
+      "@id": "http://localhost:7000/records/999888",
+      "@type": "sp:MedicalRecord",
+      "sp:hasStatement": "http://localhost:7000/records/999888/vital_signs/c9ddca3e-3df8-4f13-9a16-eecd80aa8ff6"
+    },
     "sp:bloodPressure": {
       "@id": "_:t2",
       "@type": "sp:BloodPressure",
@@ -178,5 +124,5 @@
         }
       }
     }
-  }
-]
\ No newline at end of file
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-0016-out.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-0016-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -1,13 +1,15 @@
-[{
+{
   "@context": {
     "dc": "http://purl.org/dc/elements/1.1/",
     "ex": "http://example.org/vocab#"
   },
-  "@id": "http://example.org/test/#library",
-  "@type": "ex:Library",
-  "ex:contains": {
-    "@id": "http://example.org/test#untyped",
-    "dc:contributor": "Writer",
-    "dc:title": "My Book"
-  }
-}]
\ No newline at end of file
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
+    "ex:contains": {
+      "@id": "http://example.org/test#untyped",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book"
+    }
+  }]
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-suite/tests/frame-0017-frame.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -0,0 +1,13 @@
+{
+  "@context": {
+    "dc": "http://purl.org/dc/elements/1.1/",
+    "ex": "http://example.org/vocab#"
+  },
+  "@type": "ex:Library",
+  "ex:contains": {
+    "@type": "ex:Book",
+    "ex:contains": {
+      "@type": "ex:Chapter"
+    }
+  }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-suite/tests/frame-0017-in.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -0,0 +1,21 @@
+{
+  "@context": {
+    "dc": "http://purl.org/dc/elements/1.1/",
+    "ex": "http://example.org/vocab#",
+    "ex:contains": {"@type": "@id"}
+  },
+  "@id": "http://example.org/test/#library",
+  "@type": "ex:Library",
+  "ex:contains": {
+    "@id": "http://example.org/test#book",
+    "@type": "ex:Book",
+    "dc:contributor": "Writer",
+    "dc:title": "My Book",
+    "ex:contains": {
+      "@id": "http://example.org/test#chapter",
+      "@type": "ex:Chapter",
+      "dc:description": "Fun",
+      "dc:title": "Chapter One"
+    }
+  }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-suite/tests/frame-0017-out.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -0,0 +1,22 @@
+{
+  "@context": {
+    "dc": "http://purl.org/dc/elements/1.1/",
+    "ex": "http://example.org/vocab#"
+  },
+  "@graph": [{
+    "@id": "http://example.org/test/#library",
+    "@type": "ex:Library",
+    "ex:contains": {
+      "@id": "http://example.org/test#book",
+      "@type": "ex:Book",
+      "dc:contributor": "Writer",
+      "dc:title": "My Book",
+      "ex:contains": {
+        "@id": "http://example.org/test#chapter",
+        "@type": "ex:Chapter",
+        "dc:description": "Fun",
+        "dc:title": "Chapter One"
+      }
+    }
+  }]
+}
\ No newline at end of file
--- a/test-suite/tests/frame-manifest.jsonld	Sun Apr 15 11:50:57 2012 -0700
+++ b/test-suite/tests/frame-manifest.jsonld	Sun Apr 15 18:41:02 2012 -0400
@@ -100,5 +100,11 @@
       "input": "frame-0016-in.jsonld",
       "frame": "frame-0016-frame.jsonld",
       "expect": "frame-0016-out.jsonld"
+   }, {
+      "@type": ["test:TestCase", "jld:FrameTest"],
+      "name": "Non-flat input",
+      "input": "frame-0017-in.jsonld",
+      "frame": "frame-0017-frame.jsonld",
+      "expect": "frame-0017-out.jsonld"
    }]
 }