def test_merge_contexts_base(self): self.assertEqual( JsonObj(**{'@context': JsonObj(**{'@base': 'file://relloc'})}), merge_contexts(base='file://relloc')) self.assertEqual( loads(f'{{"@context": {{"@base": "{META_BASE_URI}"}}}}'), merge_contexts(base=META_BASE_URI)) self.assertEqual( loads(""" {"@context": [ "https://w3id.org/biolink/biolinkml/context.jsonld", { "ex": "http://example.org/test/", "ex2": "http://example.org/test2/" }, { "ex": "http://example.org/test3/", "ex2": { "@id": "http://example.org/test4/" } }, { "@base": "https://w3id.org/biolink/biolinkml/" } ] }"""), merge_contexts([METAMODEL_CONTEXT_URI, json_1, json_2], base=META_BASE_URI))
def as_json_object(element: YAMLRoot, contexts: CONTEXTS_PARAM_TYPE = None) -> JsonObj: """ Return the representation of element as a JsonObj object :param element: element to return :param contexts: context(s) to include in the output :return: JsonObj representation of element """ rval = JsonObj(**element.__dict__) rval['type'] = element.__class__.__name__ context_element = merge_contexts(contexts) if context_element: rval['@context'] = context_element['@context'] return rval
def test_merge_contexts(self): self.assertIsNone(merge_contexts()) self.assertEqual('file://local.jsonld', merge_contexts("local.jsonld")['@context']) self.assertEqual('file://local.jsonld', merge_contexts(["local.jsonld"])['@context']) self.assertEqual(METAMODEL_CONTEXT_URI, merge_contexts(METAMODEL_CONTEXT_URI)['@context']) self.assertEqual(METAMODEL_CONTEXT_URI, merge_contexts([METAMODEL_CONTEXT_URI])['@context']) self.assertEqual( JsonObj(ex='http://example.org/test/', ex2='http://example.org/test2/'), merge_contexts(json_1)['@context']) self.assertEqual( JsonObj(ex='http://example.org/test/', ex2='http://example.org/test2/'), merge_contexts([json_1])['@context']) self.assertEqual( JsonObj(ex='http://example.org/test3/', ex2=JsonObj(**{'@id': 'http://example.org/test4/'})), merge_contexts(json_2)['@context']) self.assertEqual( JsonObj(ex='http://example.org/test3/', ex2=JsonObj(**{'@id': 'http://example.org/test4/'})), merge_contexts([json_2])['@context']) self.assertEqual([ f'file://local.jsonld', 'https://w3id.org/biolink/biolinkml/context.jsonld', JsonObj(ex='http://example.org/test/', ex2='http://example.org/test2/'), JsonObj(ex='http://example.org/test3/', ex2=JsonObj(**{'@id': 'http://example.org/test4/'})) ], merge_contexts([ "local.jsonld", METAMODEL_CONTEXT_URI, json_1, json_2 ])['@context']) self.assertEqual( loads(context_output), merge_contexts( ["local.jsonld", METAMODEL_CONTEXT_URI, json_1, json_2])) # Dups are not removed self.assertEqual( JsonObj( **{ '@context': [ JsonObj(ex='http://example.org/test/', ex2='http://example.org/test2/'), JsonObj(ex='http://example.org/test/', ex2='http://example.org/test2/') ] }), merge_contexts([json_1, json_1])) self.assertEqual('file://local.jsonld', merge_contexts("local.jsonld")['@context'])