6
6
from typing import Optional
7
7
8
8
import pkg_resources
9
+ from curies import Converter
9
10
10
- from sssom .constants import EXTERNAL_CONTEXT
11
+ from sssom .constants import EXTENDED_PREFIX_MAP
11
12
12
13
from .typehints import Metadata , MetadataType , PrefixMap
13
14
14
15
# HERE = pathlib.Path(__file__).parent.resolve()
15
16
# DEFAULT_CONTEXT_PATH = HERE / "sssom.context.jsonld"
16
- # EXTERNAL_CONTEXT_PATH = HERE / "sssom.external.context.jsonld "
17
+ # EXTERNAL_CONTEXT_PATH = HERE / "obo.epm.json "
17
18
18
19
SSSOM_URI_PREFIX = "https://w3id.org/sssom/"
19
20
SSSOM_BUILT_IN_PREFIXES = ("sssom" , "owl" , "rdf" , "rdfs" , "skos" , "semapv" )
@@ -37,14 +38,13 @@ def get_jsonld_context():
37
38
return context
38
39
39
40
40
- def get_external_jsonld_context ():
41
- """Get JSON-LD form of sssom_external_context variable from auto-generated 'external_context.py' file .
41
+ def get_extended_prefix_map ():
42
+ """Get prefix map from bioregistry (obo.epm.json) .
42
43
43
- :return: JSON-LD context
44
+ :return: Prefix map.
44
45
"""
45
- with open (str (EXTERNAL_CONTEXT ), "r" ) as f :
46
- data = json .load (f , strict = False )
47
- return data
46
+ converter = Converter .from_extended_prefix_map (EXTENDED_PREFIX_MAP )
47
+ return converter .prefix_map
48
48
49
49
50
50
def get_built_in_prefix_map () -> PrefixMap :
@@ -97,7 +97,7 @@ def get_default_metadata() -> Metadata:
97
97
:return: Metadata
98
98
"""
99
99
contxt = get_jsonld_context ()
100
- contxt_external = get_external_jsonld_context ()
100
+ contxt_external = get_extended_prefix_map ()
101
101
prefix_map = {}
102
102
metadata_dict : MetadataType = {}
103
103
for key in contxt ["@context" ]:
@@ -108,16 +108,8 @@ def get_default_metadata() -> Metadata:
108
108
if "@id" in v and "@prefix" in v :
109
109
if v ["@prefix" ]:
110
110
prefix_map [key ] = v ["@id" ]
111
- for key in contxt_external ["@context" ]:
112
- v = contxt_external ["@context" ][key ]
113
- if isinstance (v , str ):
114
- if key not in prefix_map :
115
- prefix_map [key ] = v
116
- else :
117
- if prefix_map [key ] != v :
118
- logging .warning (
119
- f"{ key } is already in prefix map ({ prefix_map [key ]} , but with a different value than { v } "
120
- )
111
+
112
+ prefix_map .update ({(k , v ) for k , v in contxt_external .items () if k not in prefix_map })
121
113
122
114
metadata = Metadata (prefix_map = prefix_map , metadata = metadata_dict )
123
115
metadata .metadata ["mapping_set_id" ] = DEFAULT_MAPPING_SET_ID
0 commit comments