{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# User/Issue model from [ShEx primer](http://shex.io/shex-primer/#simple-expressions)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[39m\u001b[1mInstalling \u001b[32m\u001b[1m-e .\u001b[39m\u001b[22m…\u001b[39m\u001b[22m\n", "\u001b[K\u001b[39m\u001b[1mAdding\u001b[39m\u001b[22m \u001b[32m\u001b[1mbiolinkml\u001b[39m\u001b[22m \u001b[39m\u001b[1mto Pipfile's\u001b[39m\u001b[22m \u001b[31m\u001b[1m[packages]\u001b[39m\u001b[22m\u001b[39m\u001b[1m…\u001b[39m\u001b[22m\n", "\u001b[K\u001b[?25h✔ Installation Succeeded\u001b[0m \n", "\u001b[31m\u001b[1mPipfile.lock (1d3289) out of date, updating to (d46387)…\u001b[39m\u001b[22m\n", "\u001b[39m\u001b[22mLocking\u001b[39m\u001b[22m \u001b[31m\u001b[22m[dev-packages]\u001b[39m\u001b[22m \u001b[39m\u001b[22mdependencies…\u001b[39m\u001b[22m\n", "\u001b[K\u001b[?25h\u001b[32m\u001b[22m✔ Success!\u001b[39m\u001b[22m\u001b[0m \n", "\u001b[39m\u001b[22mLocking\u001b[39m\u001b[22m \u001b[31m\u001b[22m[packages]\u001b[39m\u001b[22m \u001b[39m\u001b[22mdependencies…\u001b[39m\u001b[22m\n", "\u001b[K\u001b[?25h\u001b[32m\u001b[22m✔ Success!\u001b[39m\u001b[22m\u001b[0m \n", "\u001b[39m\u001b[1mUpdated Pipfile.lock (1d3289)!\u001b[39m\u001b[22m\n", "\u001b[39m\u001b[1mInstalling dependencies from Pipfile.lock (1d3289)…\u001b[39m\u001b[22m\n", " 🐍 \u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m\u001b[32m\u001b[1m▉\u001b[39m\u001b[22m 40/40 — \u001b[30m\u001b[22m00:00:07\u001b[39m\u001b[22mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n", "\u001b[0m" ] } ], "source": [ "!pip install biolinkml --upgrade -q" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# Auto generated from None by pythongen.py version: 0.1.0\n", "# Generation date: 2019-01-27 20:21\n", "# Schema: issue\n", "#\n", "# id: http://shex.io/shex-primer/issueshape\n", "# description:\n", "# license:\n", "\n", "from typing import Optional, List, Union, Dict\n", "from dataclasses import dataclass\n", "from biolinkml.utils.metamodelcore import empty_list, empty_dict\n", "from biolinkml.utils.yamlutils import YAMLRoot\n", "\n", "\n", "metamodel_version = \"0.1.0\"\n", "\n", "inherited_slots: List[str] = []\n", "\n", "\n", "# Type names\n", "\n", "\n", "# Class references\n", "class PersonName(str):\n", " pass\n", "\n", "\n", "class EnroleeName(PersonName):\n", " pass\n", "\n", "\n", "@dataclass\n", "class Person(YAMLRoot):\n", "\n", " # === person ===\n", " name: Union[str, PersonName]\n", "\n", " def _fix_elements(self):\n", " super()._fix_elements()\n", " if not isinstance(self.name, PersonName):\n", " self.name = PersonName(self.name)\n", "\n", "\n", "@dataclass\n", "class Enrolee(Person):\n", "\n", " # === person ===\n", " name: Union[str, EnroleeName]\n", "\n", " # === enrolee ===\n", " hasGuardian: List[Union[str, PersonName]] = empty_list()\n", " age: Optional[int] = None\n", "\n", " def _fix_elements(self):\n", " super()._fix_elements()\n", " if self.name and not isinstance(self.name, EnroleeName):\n", " self.name = EnroleeName(self.name)\n", " self.hasGuardian = [v if isinstance(v, PersonName)\n", " else PersonName(v) for v in self.hasGuardian]\n", "\n", "\n", " \n", "\n", " \n", "\n", " (\n", " @ AND CLOSED {\n", " ( @ ? ;\n", " @ +\n", " )\n", " }\n", ")\n", "\n", " CLOSED {\n", " @\n", "}\n", "\n", "\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/solbrig/.local/share/virtualenvs/jupyter-hyfYqf8S/lib/python3.7/site-packages/cachier/mongo_core.py:24: UserWarning: Cachier warning: pymongo was not found. MongoDB cores will not work.\n", " \"Cachier warning: pymongo was not found. MongoDB cores will not work.\")\n" ] } ], "source": [ "from biolinkml.generators.shexgen import ShExGenerator\n", "from biolinkml.generators.pythongen import PythonGenerator\n", "\n", "model = \"\"\"\n", "id: http://shex.io/shex-primer/issueshape\n", "title: Issue Shape from ShEx primer\n", "name: issue\n", "version: 0.1.0\n", "\n", "prefixes:\n", " issue: http://shex.io/shex-primer/issue/\n", " ex: http://ex.example/#\n", " xsd: http://www.w3.org/2001/XMLSchema#\n", " foaf: http://xmlns.com/foaf/0.1/\n", "\n", "default_prefix: issue\n", "\n", "default_range: str\n", "\n", "types:\n", " str:\n", " base: str\n", " uri: xsd:string\n", "\n", " int:\n", " base: int\n", " uri: xsd:integer\n", "\n", "classes:\n", " person:\n", " enrolee:\n", " is_a: person\n", "\n", "slots:\n", " name:\n", " domain: person\n", " range: str\n", " key: true\n", "\n", " age:\n", " domain: enrolee\n", " range: int\n", " slot_uri: foaf:age\n", "\n", " hasGuardian:\n", " domain: enrolee\n", " range: person\n", " multivalued: true\n", " required: true\n", "\n", "\"\"\"\n", "print(PythonGenerator(model).serialize())\n", "print(ShExGenerator(model).serialize(collections=False))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.2" } }, "nbformat": 4, "nbformat_minor": 1 }