Skip to content

Commit e186882

Browse files
committed
registry
1 parent 4603b84 commit e186882

File tree

10 files changed

+52
-17
lines changed

10 files changed

+52
-17
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ download/reactome-biopax.zip:
146146
src/semsql/builder/registry/registry_schema.py: src/semsql/builder/registry/registry_schema.yaml
147147
$(RUN) gen-python $< > $@
148148

149-
ontologies.Makefile: src/semsql/builder/registry/ontologies.yaml
150-
$(RUN) semsql generate-makefile $< > $@.tmp && mv $@.tmp $@
149+
ontologies.Makefile: src/semsql/builder/registry/ontologies.yaml
150+
$(RUN) semsql generate-makefile -P src/semsql/builder/prefixes/prefixes_local.csv $< > $@.tmp && mv $@.tmp $@
151151

152152
include ontologies.Makefile
153153

ontologies.Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
db/msio.owl: STAMP
2+
curl -L -s https://raw.githubusercontent.com/MSI-Metabolomics-Standards-Initiative/MSIO/master/releases/latest_release/MSIO-merged-reasoned.owl > $@.tmp && mv $@.tmp $@
3+
14
db/phenio.owl: STAMP
25
curl -L -s https://github.com/monarch-initiative/phenio/releases/download/latest/phenio.owl > $@.tmp && mv $@.tmp $@
36

@@ -40,4 +43,4 @@ db/lov.owl: STAMP
4043
db/schema-dot-org.owl: STAMP
4144
curl -L -s https://schema.org/version/latest/schemaorg-current-https.rdf > $@.tmp && mv $@.tmp $@
4245

43-
46+
EXTRA_ONTOLOGIES = msio phenio bero aio reacto go-lego bao biolink biopax enanomapper efo edam sweetAll lov schema-dot-org

src/semsql/builder/build.Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ help:
3333
# All dbs are made from an initial template containing
3434
# (1) prefixes
3535
# (2) SQL Schema (primarily views)
36-
$(TEMPLATE): $(THIS_DIR)/sql_schema/semsql.sql
36+
$(TEMPLATE): $(THIS_DIR)/sql_schema/semsql.sql build_prefixes
3737
cat $< | sqlite3 $@.tmp && \
3838
echo .exit | sqlite3 -echo $@.tmp -cmd ".mode csv" -cmd ".import $(THIS_DIR)/prefixes/prefixes.csv prefix" && \
3939
mv $@.tmp $@
@@ -96,6 +96,6 @@ $(PREFIX_DIR)/obo_prefixes.db: $(PREFIX_DIR)/obo_prefixes.owl
9696
$(PREFIX_DIR)/obo_prefixes.csv: $(PREFIX_DIR)/obo_prefixes.db
9797
sqlite3 $< -cmd ".separator ','" "SELECT p.value AS prefix, ns.value AS base FROM statements AS p JOIN statements AS ns ON (p.subject=ns.subject) WHERE p.predicate='<http://www.w3.org/ns/shacl#prefix>' AND ns.predicate='<http://www.w3.org/ns/shacl#namespace>'" > $@
9898

99-
$(PREFIX_DIR)/prefixes.csv: $(PREFIX_DIR)/prefixes_curated.csv $(PREFIX_DIR)/obo_prefixes.csv
99+
$(PREFIX_DIR)/prefixes.csv: $(PREFIX_DIR)/prefixes_curated.csv $(PREFIX_DIR)/prefixes_local.csv $(PREFIX_DIR)/obo_prefixes.csv
100100
cat $^ > $@
101101

src/semsql/builder/builder.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import shutil
55
import subprocess
66
from pathlib import Path
7-
from typing import Optional
7+
from typing import Optional, TextIO
88

99
import requests
1010
from linkml_runtime.loaders import yaml_loader
@@ -107,17 +107,20 @@ def connect(owl_file: str):
107107
session = Session()
108108
return session
109109

110-
def compile_registry(registry_path: str) -> str:
110+
def compile_registry(registry_path: str, local_prefix_file: TextIO = None) -> str:
111111
"""
112112
Generate makefile content from registry
113113
114114
:param registry_path:
115+
:param local_prefix_file:
115116
:return:
116117
"""
117118
registry: registry_schema.Registry
118119
registry = yaml_loader.load(registry_path, target_class=registry_schema.Registry)
119120
mkfile = ""
120121
onts = []
122+
if local_prefix_file:
123+
local_prefix_file.write("prefix,base\n")
121124
for ont in registry.ontologies.values():
122125
target = f"db/{ont.id}.owl"
123126
dependencies = ["STAMP"]
@@ -128,5 +131,8 @@ def compile_registry(registry_path: str) -> str:
128131
dependencies_str = " ".join(dependencies)
129132
mkfile += f"{target}: {dependencies_str}\n\t{command}\n\n"
130133
onts.append(ont.id)
134+
if local_prefix_file:
135+
for pn in ont.prefixmap.values():
136+
local_prefix_file.write(f"{pn.prefix},{pn.prefix_value}\n")
131137
mkfile += f"EXTRA_ONTOLOGIES = {' '.join(onts)}"
132138
return mkfile

src/semsql/builder/cli.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,16 @@ def make(path, docker):
5151

5252

5353
@main.command()
54+
@click.option("--local-prefixes",
55+
"-P",
56+
type=click.File(mode="w"),
57+
help="path to local prefixes file (will be overridden)")
5458
@click.argument("registry")
55-
def generate_makefile(registry):
59+
def generate_makefile(registry, local_prefixes):
5660
"""
5761
Generates makefile
5862
"""
59-
print(builder.compile_registry(registry))
63+
print(builder.compile_registry(registry, local_prefix_file=local_prefixes))
6064

6165

6266
@main.command()

src/semsql/builder/prefixes/prefixes.csv

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ wikidata,http://www.wikidata.org/entity/
4949
schema,https://schema.org/
5050
ICD10CM,http://purl.bioontology.org/ontology/ICD10CM/
5151
ICD10WHO,https://icd.who.int/browse10/2019/en#/
52+
prefix,base
53+
MSIO,http://purl.obolibrary.org/obo/MSIO_
54+
nmrCV,http://nmrML.org/nmrCV#NMR:
55+
evs.ncit,http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#
56+
old.fix,http://purl.org/obo/owl/FIX#
5257
PSO,http://purl.obolibrary.org/obo/PSO_
5358
CHIRO,http://purl.obolibrary.org/obo/CHIRO_
5459
PW,http://purl.obolibrary.org/obo/PW_
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
prefix,base
2+
MSIO,http://purl.obolibrary.org/obo/MSIO_
3+
nmrCV,http://nmrML.org/nmrCV#NMR:
4+
evs.ncit,http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#
5+
old.fix,http://purl.org/obo/owl/FIX#

src/semsql/builder/registry/ontologies.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ id: semantic-sql-registry
22
description: Registry overlap for Semantic-SQL designed to supplement OBO vocabularies
33
license: CC0
44
ontologies:
5+
msio:
6+
url: https://raw.githubusercontent.com/MSI-Metabolomics-Standards-Initiative/MSIO/master/releases/latest_release/MSIO-merged-reasoned.owl
7+
prefixmap:
8+
MSIO: http://purl.obolibrary.org/obo/MSIO_
9+
nmrCV: "http://nmrML.org/nmrCV#NMR:"
510
phenio:
611
description: Monarch Phenomics Integrated Ontology
712
url: https://github.com/monarch-initiative/phenio/releases/download/latest/phenio.owl
@@ -28,7 +33,7 @@ ontologies:
2833
has_imports: true
2934
prefixmap:
3035
evs.ncit: http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#
31-
fix: http://purl.org/obo/owl/FIX#
36+
old.fix: http://purl.org/obo/owl/FIX#
3237
efo:
3338
url: http://www.ebi.ac.uk/efo/efo.owl
3439
has_imports: true

src/semsql/builder/registry/registry_schema.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Auto generated from registry_schema.yaml by pythongen.py version: 0.9.0
2-
# Generation date: 2022-09-05T18:53:50
2+
# Generation date: 2022-09-17T15:44:28
33
# Schema: ontology_registry
44
#
55
# id: https://w3id.org/semsql/registry
@@ -22,7 +22,8 @@
2222
from linkml_runtime.utils.enumerations import EnumDefinitionImpl
2323
from rdflib import Namespace, URIRef
2424
from linkml_runtime.utils.curienamespace import CurieNamespace
25-
from linkml_runtime.linkml_model.types import Integer, String
25+
from linkml_runtime.linkml_model.types import Boolean, Integer, String
26+
from linkml_runtime.utils.metamodelcore import Bool
2627

2728
metamodel_version = "1.7.0"
2829
version = None
@@ -86,10 +87,11 @@ class Ontology(YAMLRoot):
8687
url: Optional[Union[str, Identifier]] = None
8788
has_imports: Optional[int] = None
8889
jsonld_context: Optional[Union[str, HttpsIdentifier]] = None
89-
prefixmap: Optional[Union[Union[str, PrefixMapPrefix], List[Union[str, PrefixMapPrefix]]]] = empty_list()
90+
prefixmap: Optional[Union[Dict[Union[str, PrefixMapPrefix], Union[dict, "PrefixMap"]], List[Union[dict, "PrefixMap"]]]] = empty_dict()
9091
named_prefixmaps: Optional[Union[str, List[str]]] = empty_list()
9192
format: Optional[str] = None
9293
compression: Optional[Union[str, "CompressionEnum"]] = None
94+
suppress: Optional[Union[bool, Bool]] = None
9395

9496
def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
9597
if self._is_empty(self.id):
@@ -109,9 +111,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
109111
if self.jsonld_context is not None and not isinstance(self.jsonld_context, HttpsIdentifier):
110112
self.jsonld_context = HttpsIdentifier(self.jsonld_context)
111113

112-
if not isinstance(self.prefixmap, list):
113-
self.prefixmap = [self.prefixmap] if self.prefixmap is not None else []
114-
self.prefixmap = [v if isinstance(v, PrefixMapPrefix) else PrefixMapPrefix(v) for v in self.prefixmap]
114+
self._normalize_inlined_as_dict(slot_name="prefixmap", slot_type=PrefixMap, key_name="prefix", keyed=True)
115115

116116
if not isinstance(self.named_prefixmaps, list):
117117
self.named_prefixmaps = [self.named_prefixmaps] if self.named_prefixmaps is not None else []
@@ -123,6 +123,9 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
123123
if self.compression is not None and not isinstance(self.compression, CompressionEnum):
124124
self.compression = CompressionEnum(self.compression)
125125

126+
if self.suppress is not None and not isinstance(self.suppress, Bool):
127+
self.suppress = Bool(self.suppress)
128+
126129
super().__post_init__(**kwargs)
127130

128131

@@ -220,7 +223,7 @@ class slots:
220223
model_uri=SEMSQL_REGISTRY.jsonld_context, domain=None, range=Optional[Union[str, HttpsIdentifier]])
221224

222225
slots.prefixmap = Slot(uri=SEMSQL_REGISTRY.prefixmap, name="prefixmap", curie=SEMSQL_REGISTRY.curie('prefixmap'),
223-
model_uri=SEMSQL_REGISTRY.prefixmap, domain=None, range=Optional[Union[Union[str, PrefixMapPrefix], List[Union[str, PrefixMapPrefix]]]])
226+
model_uri=SEMSQL_REGISTRY.prefixmap, domain=None, range=Optional[Union[Dict[Union[str, PrefixMapPrefix], Union[dict, PrefixMap]], List[Union[dict, PrefixMap]]]])
224227

225228
slots.named_prefixmaps = Slot(uri=SEMSQL_REGISTRY.named_prefixmaps, name="named_prefixmaps", curie=SEMSQL_REGISTRY.curie('named_prefixmaps'),
226229
model_uri=SEMSQL_REGISTRY.named_prefixmaps, domain=None, range=Optional[Union[str, List[str]]])
@@ -242,3 +245,6 @@ class slots:
242245

243246
slots.ontologies = Slot(uri=SEMSQL_REGISTRY.ontologies, name="ontologies", curie=SEMSQL_REGISTRY.curie('ontologies'),
244247
model_uri=SEMSQL_REGISTRY.ontologies, domain=None, range=Optional[Union[Dict[Union[str, OntologyId], Union[dict, Ontology]], List[Union[dict, Ontology]]]])
248+
249+
slots.suppress = Slot(uri=SEMSQL_REGISTRY.suppress, name="suppress", curie=SEMSQL_REGISTRY.curie('suppress'),
250+
model_uri=SEMSQL_REGISTRY.suppress, domain=None, range=Optional[Union[bool, Bool]])

src/semsql/builder/registry/registry_schema.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ slots:
5050
- value: '[''$ref:Prefixmap'', ''$ref:Prefixmap'']'
5151
multivalued: true
5252
range: PrefixMap
53+
inlined: true
5354
named_prefixmaps:
5455
examples:
5556
- value: '[''sweet'', ''prefixcc'']'

0 commit comments

Comments
 (0)