From 6bd8b533cfd927bc2e26c134e4deefedfbd84687 Mon Sep 17 00:00:00 2001 From: John Mugisa Date: Thu, 28 Nov 2024 14:39:19 +0100 Subject: [PATCH 1/6] updated updated with parameter values --- examples/mj1_cell_metadata.ipynb | 50 ++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/examples/mj1_cell_metadata.ipynb b/examples/mj1_cell_metadata.ipynb index c024bfc..a079003 100644 --- a/examples/mj1_cell_metadata.ipynb +++ b/examples/mj1_cell_metadata.ipynb @@ -142,28 +142,72 @@ "ne_current_collector = cold.CurrentCollector()\n", "ne_coating = cold.Coating()\n", "electrolyte = cold.OrganicElectrolyte()\n", - "separator = cold.Separator()\n", + "Separator = cold.Separator()\n", + "se_coating = cold.Coating()\n", "case = cold.R18650()\n", "cell = cold.BatteryCell()\n", - "\n", + "#Separator.hasConstituent = Separator\n", "# Assign the parts of the coating\n", "pe_coating.hasConstituent = pe_am\n", "pe_coating.hasBinder = pe_binder\n", "pe_coating.hasConstituent = pe_additive\n", "\n", + "\n", "# Assign the parts of the electrode\n", "pe = cold.Electrode()\n", "pe.hasCoating = pe_coating\n", + "pe_coating.hasProperty=[\n", + " cold.Porosity(-0.1, \"UnitOne\")\n", + " cold.Thickness(25e-6, \"UnitOne\")\n", + "]\n", + "\n", "pe.hasCurrentCollector = pe_current_collector\n", + "pe_current_collector.hasProperty=[\n", + " cold.CurrentCollector(25e-4, \"MetreSquare\")\n", + "]\n", "\n", "pe_am.hasProperty = [\n", " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\")\n", - " cold\n", + " cold.BruggemanCoefficient(3.06149286969267, \"UnitOne\")\n", + " cold.VolumeFraction(0.2, \"UnitOne\")\n", + " cold.OpenCircuitPotential(function, \"Volt\") ###update when handling functon\n", + " cold.ActiveMaterialVolumeFraction(0.12, \"UnitOne\")] ###update variable Not In emmo repo ??\n", + "\n", + "ne = cold.Electrode()\n", + "ne.hasCoating = ne_coating\n", + "\n", + "ne_coating.hasProperty=[\n", + " cold.Porosity(-0.1, \"UnitOne\")\n", + " cold.Thickness(45e-6, \"UnitOne\")\n", + "]\n", + "\n", + "ne.hasCurrentCollector = ne_current_collector\n", + "ne_current_collector.hasProperty=[\n", + " cold.CurrentCollector(25e-4, \"MetreSquare\")\n", + "]\n", + "\n", + "ne_am.hasProperty = [\n", + " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", + " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\")\n", + " cold.BruggemanCoefficient(2.723578079404257, \"UnitOne\")\n", + " cold.VolumeFraction(0.1, \"UnitOne\") ###update when handling functon\n", + " cold.OpenCircuitPotential(function, \"Volt\")] ###### update for function\n", + "\n", + "#se = cold.Seperator()\n", + "Separator.hasCoating = se_coating\n", + "se_coating.hasProperty=[\n", + " cold.Porosity(0.55, \"UnitOne\")\n", + " cold.Thickness(25e-6, \"UnitOne\")\n", "]\n", "\n", "# Serialize to JSON-LD\n", "#json_ld = pe_am.to_jsonld()\n", + "#print(json.dumps(json_ld, indent=4))\n", + "\n", + "\n", + "# Serialize to JSON-LD\n", + "#json_ld = pe_am.to_jsonld()\n", "#print(json.dumps(json_ld, indent=4))\n" ] } From cbb97f98318bde69fcce57f77bebb87118ffac4a Mon Sep 17 00:00:00 2001 From: Simon Clark Date: Thu, 28 Nov 2024 15:26:00 +0100 Subject: [PATCH 2/6] Update mj1_cell_metadata.ipynb simon john discussion updates --- examples/mj1_cell_metadata.ipynb | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/examples/mj1_cell_metadata.ipynb b/examples/mj1_cell_metadata.ipynb index a079003..f62c3f0 100644 --- a/examples/mj1_cell_metadata.ipynb +++ b/examples/mj1_cell_metadata.ipynb @@ -157,28 +157,30 @@ "pe = cold.Electrode()\n", "pe.hasCoating = pe_coating\n", "pe_coating.hasProperty=[\n", - " cold.Porosity(-0.1, \"UnitOne\")\n", + " cold.Porosity(-0.1, \"UnitOne\"),\n", " cold.Thickness(25e-6, \"UnitOne\")\n", "]\n", "\n", "pe.hasCurrentCollector = pe_current_collector\n", "pe_current_collector.hasProperty=[\n", - " cold.CurrentCollector(25e-4, \"MetreSquare\")\n", + " cold.Area(25e-4, \"MetreSquare\")\n", "]\n", "\n", + "#cold.Expression('f(x,y) = x^2+3y', [cold.Variable('x', cold.Length), cold.Variable('y', cold.Mass)])\n", + "\n", "pe_am.hasProperty = [\n", " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", - " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\")\n", - " cold.BruggemanCoefficient(3.06149286969267, \"UnitOne\")\n", - " cold.VolumeFraction(0.2, \"UnitOne\")\n", - " cold.OpenCircuitPotential(function, \"Volt\") ###update when handling functon\n", + " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\"),\n", + " cold.BruggemanCoefficient(3.06149286969267, \"UnitOne\"),\n", + " cold.VolumeFraction(0.2, \"UnitOne\"),\n", + " cold.OpenCircuitPotential(function, \"Volt\"), ###update when handling functon\n", " cold.ActiveMaterialVolumeFraction(0.12, \"UnitOne\")] ###update variable Not In emmo repo ??\n", "\n", "ne = cold.Electrode()\n", "ne.hasCoating = ne_coating\n", "\n", "ne_coating.hasProperty=[\n", - " cold.Porosity(-0.1, \"UnitOne\")\n", + " cold.Porosity(-0.1, \"UnitOne\"),\n", " cold.Thickness(45e-6, \"UnitOne\")\n", "]\n", "\n", @@ -189,15 +191,15 @@ "\n", "ne_am.hasProperty = [\n", " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", - " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\")\n", - " cold.BruggemanCoefficient(2.723578079404257, \"UnitOne\")\n", - " cold.VolumeFraction(0.1, \"UnitOne\") ###update when handling functon\n", + " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\"),\n", + " cold.BruggemanCoefficient(2.723578079404257, \"UnitOne\"),\n", + " cold.VolumeFraction(0.1, \"UnitOne\"), ###update when handling functon\n", " cold.OpenCircuitPotential(function, \"Volt\")] ###### update for function\n", "\n", "#se = cold.Seperator()\n", "Separator.hasCoating = se_coating\n", "se_coating.hasProperty=[\n", - " cold.Porosity(0.55, \"UnitOne\")\n", + " cold.Porosity(0.55, \"UnitOne\"),\n", " cold.Thickness(25e-6, \"UnitOne\")\n", "]\n", "\n", From 3510a164d55b64e0cd3836173463b726cc896381 Mon Sep 17 00:00:00 2001 From: John Mugisa Date: Fri, 29 Nov 2024 09:29:08 +0100 Subject: [PATCH 3/6] Update mj1_cell_metadata.ipynb --- examples/mj1_cell_metadata.ipynb | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/mj1_cell_metadata.ipynb b/examples/mj1_cell_metadata.ipynb index f62c3f0..24bfdf3 100644 --- a/examples/mj1_cell_metadata.ipynb +++ b/examples/mj1_cell_metadata.ipynb @@ -9,14 +9,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\src', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\src', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\src', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\src', 'C:\\\\Program Files\\\\Python310\\\\python310.zip', 'C:\\\\Program Files\\\\Python310\\\\DLLs', 'C:\\\\Program Files\\\\Python310\\\\lib', 'C:\\\\Program Files\\\\Python310', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\.venv', '', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\.venv\\\\lib\\\\site-packages', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\.venv\\\\lib\\\\site-packages\\\\win32', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\.venv\\\\lib\\\\site-packages\\\\win32\\\\lib', 'c:\\\\Users\\\\simonc\\\\Documents\\\\Github-local\\\\DigiBatt\\\\cold\\\\.venv\\\\lib\\\\site-packages\\\\Pythonwin']\n" + "['c:\\\\Myenv\\\\cold\\\\src', 'c:\\\\Myenv\\\\cold\\\\src', 'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\\\python311.zip', 'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\\\DLLs', 'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\\\Lib', 'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0', 'c:\\\\Myenv', '', 'c:\\\\Myenv\\\\Lib\\\\site-packages', 'c:\\\\Myenv\\\\Lib\\\\site-packages\\\\win32', 'c:\\\\Myenv\\\\Lib\\\\site-packages\\\\win32\\\\lib', 'c:\\\\Myenv\\\\Lib\\\\site-packages\\\\Pythonwin']\n" ] } ], @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -44,7 +44,7 @@ "output_type": "stream", "text": [ "Validated ElectrochemicalDevice:\n", - "class_name='CR2032' class_iri='https://w3id.org/emmo/domain/battery#battery_b61b96ac_f2f4_4b74_82d5_565fe3a2d88b' identifier=None label=None comment=None hasProperty=Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, VIMTerm=None, hasDimensionString=None, uneceCommonCode=None, qudtReference=None, ucumCode=None, iupacReference=None, hasSymbolValue=None, dbpediaReference=None), qudtReference=None, hasMetrologicalReference=None, VIMTerm=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None) hasPart=None elucidation=None conceptualisation=None definition=None extra_property=None example=None hasHolisticPart=None hasConstituent=None wikipediaReference=None hasElectrode=None hasElectrolyte=None figure=None wikidataReference=None IEVReference=None dbpediaReference=None ISO9000Reference=None ISO14040Reference=None hasCase=CoinCase(class_name='CoinCase', class_iri='https://w3id.org/emmo/domain/electrochemistry#electrochemistry_3979cd56_6256_414d_966c_7f723bf71e37', identifier=None, label=None, comment=None, hasProperty=[Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, VIMTerm=None, hasDimensionString=None, uneceCommonCode=None, qudtReference=None, ucumCode=None, iupacReference=None, hasSymbolValue=None, dbpediaReference=None), qudtReference=None, hasMetrologicalReference=None, VIMTerm=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None), Thickness(class_name='Thickness', class_iri='https://w3id.org/emmo#EMMO_43003c86_9d15_433b_9789_ee2940920656', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, hasNumericalValue=0.0032), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, wikipediaReference=None, VIMTerm=None, hasDimensionString=None, uneceCommonCode=None, qudtReference=None, ucumCode=None, iupacReference=None, hasSymbolValue=None, dbpediaReference=None), qudtReference=None, hasMetrologicalReference=None, VIMTerm=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, wikidataReference=None, IEVReference=None)], hasPart=None, elucidation=None, conceptualisation=None, definition=None, extra_property=None, example=None, IEVReference=None, hasHolisticPart=None, hasConstituent=None) custom_feature=None hasNegativeElectrode=None hasPositiveElectrode=None\n", + "class_name='CR2032' class_iri='https://w3id.org/emmo/domain/battery#battery_b61b96ac_f2f4_4b74_82d5_565fe3a2d88b' identifier=None label=None comment=None hasProperty=Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None) hasPart=None conceptualisation=None definition=None elucidation=None extra_property=None example=None hasHolisticPart=None hasConstituent=None IEVReference=None wikipediaReference=None wikidataReference=None dbpediaReference=None figure=None hasElectrolyte=None hasElectrode=None ISO14040Reference=None ISO9000Reference=None hasCase=CoinCase(class_name='CoinCase', class_iri='https://w3id.org/emmo/domain/electrochemistry#electrochemistry_3979cd56_6256_414d_966c_7f723bf71e37', identifier=None, label=None, comment=None, hasProperty=[Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None), Thickness(class_name='Thickness', class_iri='https://w3id.org/emmo#EMMO_43003c86_9d15_433b_9789_ee2940920656', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.0032), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, wikidataReference=None, IEVReference=None)], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, IEVReference=None, hasHolisticPart=None, hasConstituent=None) custom_feature=None hasNegativeElectrode=None hasPositiveElectrode=None\n", "{\n", " \"@context\": \"https://w3id.org/emmo/domain/battery/context\",\n", " \"@type\": \"CR2032\",\n", @@ -114,19 +114,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [ { "ename": "ValueError", - "evalue": "\"Electrode\" object has no field \"hasCoating\"", + "evalue": "\"Coating\" object has no field \"hasConstituent\"", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[24], line 23\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# Assign the parts of the coating\u001b[39;00m\n\u001b[0;32m 17\u001b[0m \u001b[38;5;66;03m#pe_coating.hasConstituent = pe_am\u001b[39;00m\n\u001b[0;32m 18\u001b[0m \u001b[38;5;66;03m#pe_coating.hasBinder = pe_binder\u001b[39;00m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;66;03m#pe_coating.hasConstituent = pe_additive\u001b[39;00m\n\u001b[0;32m 20\u001b[0m \n\u001b[0;32m 21\u001b[0m \u001b[38;5;66;03m# Assign the parts of the electrode\u001b[39;00m\n\u001b[0;32m 22\u001b[0m pe \u001b[38;5;241m=\u001b[39m cold\u001b[38;5;241m.\u001b[39mElectrode()\n\u001b[1;32m---> 23\u001b[0m \u001b[43mpe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhasCoating\u001b[49m \u001b[38;5;241m=\u001b[39m pe_coating\n\u001b[0;32m 24\u001b[0m pe\u001b[38;5;241m.\u001b[39mhasCurrentCollector \u001b[38;5;241m=\u001b[39m pe_current_collector\n\u001b[0;32m 26\u001b[0m \u001b[38;5;66;03m# Serialize to JSON-LD\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\simonc\\Documents\\Github-local\\DigiBatt\\cold\\.venv\\lib\\site-packages\\pydantic\\main.py:926\u001b[0m, in \u001b[0;36mBaseModel.__setattr__\u001b[1;34m(self, name, value)\u001b[0m\n\u001b[0;32m 923\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_validator__\u001b[38;5;241m.\u001b[39mvalidate_assignment(\u001b[38;5;28mself\u001b[39m, name, value)\n\u001b[0;32m 924\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 925\u001b[0m \u001b[38;5;66;03m# TODO - matching error\u001b[39;00m\n\u001b[1;32m--> 926\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m object has no field \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 927\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 928\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra:\n", - "\u001b[1;31mValueError\u001b[0m: \"Electrode\" object has no field \"hasCoating\"" + "Cell \u001b[1;32mIn[6], line 18\u001b[0m\n\u001b[0;32m 15\u001b[0m cell \u001b[38;5;241m=\u001b[39m cold\u001b[38;5;241m.\u001b[39mBatteryCell()\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m#Separator.hasConstituent = Separator\u001b[39;00m\n\u001b[0;32m 17\u001b[0m \u001b[38;5;66;03m# Assign the parts of the coating\u001b[39;00m\n\u001b[1;32m---> 18\u001b[0m \u001b[43mpe_coating\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhasConstituent\u001b[49m \u001b[38;5;241m=\u001b[39m pe_am\n\u001b[0;32m 19\u001b[0m pe_coating\u001b[38;5;241m.\u001b[39mhasBinder \u001b[38;5;241m=\u001b[39m pe_binder\n\u001b[0;32m 20\u001b[0m pe_coating\u001b[38;5;241m.\u001b[39mhasConstituent \u001b[38;5;241m=\u001b[39m pe_additive\n", + "File \u001b[1;32mc:\\Myenv\\Lib\\site-packages\\pydantic\\main.py:926\u001b[0m, in \u001b[0;36mBaseModel.__setattr__\u001b[1;34m(self, name, value)\u001b[0m\n\u001b[0;32m 923\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_validator__\u001b[38;5;241m.\u001b[39mvalidate_assignment(\u001b[38;5;28mself\u001b[39m, name, value)\n\u001b[0;32m 924\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 925\u001b[0m \u001b[38;5;66;03m# TODO - matching error\u001b[39;00m\n\u001b[1;32m--> 926\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m object has no field \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 927\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 928\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra:\n", + "\u001b[1;31mValueError\u001b[0m: \"Coating\" object has no field \"hasConstituent\"" ] } ], @@ -204,13 +204,13 @@ "]\n", "\n", "# Serialize to JSON-LD\n", - "#json_ld = pe_am.to_jsonld()\n", - "#print(json.dumps(json_ld, indent=4))\n", + "json_ld = pe_am.to_jsonld()\n", + "print(json.dumps(json_ld, indent=4))\n", "\n", "\n", "# Serialize to JSON-LD\n", - "#json_ld = pe_am.to_jsonld()\n", - "#print(json.dumps(json_ld, indent=4))\n" + "json_ld = pe_am.to_jsonld()\n", + "print(json.dumps(json_ld, indent=4))\n" ] } ], From 24e5f14fc0d7538c88f31ec8b416c946e456230d Mon Sep 17 00:00:00 2001 From: John Mugisa Date: Fri, 29 Nov 2024 13:33:40 +0100 Subject: [PATCH 4/6] Update regenerate_models.py --- scripts/regenerate_models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/regenerate_models.py b/scripts/regenerate_models.py index 0874432..9fea946 100644 --- a/scripts/regenerate_models.py +++ b/scripts/regenerate_models.py @@ -10,7 +10,8 @@ from cold.ontology.extractor import extract_classes from cold.models.generator import generate_pydantic_classes -ONTOLOGY_URL = "https://w3id.org/emmo/domain/battery/inferred" +ONTOLOGY_URL = "https://w3id.org/emmo/domain/battery/inferred" +#ONTOLOGY_URL = "https://w3id.org/emmo/disciplines/units/inferred" OUTPUT_DIR = "src/cold/models/autogenerated/" TEMPLATE_PATH = "src/cold/models/templates/pydantic_template.jinja2" From 9eea94af8d3ca7e4449fafb9c87bbe8c6ac1141a Mon Sep 17 00:00:00 2001 From: John Mugisa Date: Fri, 29 Nov 2024 13:43:50 +0100 Subject: [PATCH 5/6] Update mj1_cell_metadata.ipynb --- examples/mj1_cell_metadata.ipynb | 136 ++++++++++++++----------------- 1 file changed, 63 insertions(+), 73 deletions(-) diff --git a/examples/mj1_cell_metadata.ipynb b/examples/mj1_cell_metadata.ipynb index 24bfdf3..22c1041 100644 --- a/examples/mj1_cell_metadata.ipynb +++ b/examples/mj1_cell_metadata.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -44,7 +44,7 @@ "output_type": "stream", "text": [ "Validated ElectrochemicalDevice:\n", - "class_name='CR2032' class_iri='https://w3id.org/emmo/domain/battery#battery_b61b96ac_f2f4_4b74_82d5_565fe3a2d88b' identifier=None label=None comment=None hasProperty=Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None) hasPart=None conceptualisation=None definition=None elucidation=None extra_property=None example=None hasHolisticPart=None hasConstituent=None IEVReference=None wikipediaReference=None wikidataReference=None dbpediaReference=None figure=None hasElectrolyte=None hasElectrode=None ISO14040Reference=None ISO9000Reference=None hasCase=CoinCase(class_name='CoinCase', class_iri='https://w3id.org/emmo/domain/electrochemistry#electrochemistry_3979cd56_6256_414d_966c_7f723bf71e37', identifier=None, label=None, comment=None, hasProperty=[Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, dbpediaReference=None), Thickness(class_name='Thickness', class_iri='https://w3id.org/emmo#EMMO_43003c86_9d15_433b_9789_ee2940920656', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.0032), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, iupacReference=None, hasSymbolValue=None, ucumCode=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, wikidataReference=None, IEVReference=None)], hasPart=None, conceptualisation=None, definition=None, elucidation=None, extra_property=None, example=None, IEVReference=None, hasHolisticPart=None, hasConstituent=None) custom_feature=None hasNegativeElectrode=None hasPositiveElectrode=None\n", + "class_name='CR2032' class_iri='https://w3id.org/emmo/domain/battery#battery_b61b96ac_f2f4_4b74_82d5_565fe3a2d88b' identifier=None label=None comment=None hasProperty=Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None, ucumCode=None, hasSymbolValue=None, iupacReference=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, dbpediaReference=None, IEVReference=None) hasPart=None elucidation=None definition=None conceptualisation=None extra_property=None example=None hasHolisticPart=None hasConstituent=None IEVReference=None hasElectrode=None wikipediaReference=None dbpediaReference=None figure=None hasElectrolyte=None wikidataReference=None ISO14040Reference=None ISO9000Reference=None hasCase=CoinCase(class_name='CoinCase', class_iri='https://w3id.org/emmo/domain/electrochemistry#electrochemistry_3979cd56_6256_414d_966c_7f723bf71e37', identifier=None, label=None, comment=None, hasProperty=[Diameter(class_name='Diameter', class_iri='https://w3id.org/emmo#EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.02), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None, ucumCode=None, hasSymbolValue=None, iupacReference=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, dbpediaReference=None, IEVReference=None), Thickness(class_name='Thickness', class_iri='https://w3id.org/emmo#EMMO_43003c86_9d15_433b_9789_ee2940920656', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, example=None, hasNumericalPart=NumericalPart(class_name='Real', class_iri='https://w3id.org/emmo#EMMO_18d180e4_5e3e_42f7_820c_e08951223486', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, hasNumericalValue=0.0032), hasMeasurementUnit=Metre(class_name='Metre', class_iri='https://w3id.org/emmo#Metre', identifier=None, label=None, comment=None, hasProperty=[], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, wikipediaReference=None, example=None, VIMTerm=None, hasDimensionString=None, dbpediaReference=None, qudtReference=None, uneceCommonCode=None, ucumCode=None, hasSymbolValue=None, iupacReference=None), VIMTerm=None, hasMetrologicalReference=None, qudtReference=None, wikipediaReference=None, iupacReference=None, ISO80000Reference=None, IEVReference=None, wikidataReference=None)], hasPart=None, elucidation=None, definition=None, conceptualisation=None, extra_property=None, example=None, IEVReference=None, hasHolisticPart=None, hasConstituent=None) custom_feature=None hasNegativeElectrode=None hasPositiveElectrode=None\n", "{\n", " \"@context\": \"https://w3id.org/emmo/domain/battery/context\",\n", " \"@type\": \"CR2032\",\n", @@ -114,104 +114,94 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { "ename": "ValueError", - "evalue": "\"Coating\" object has no field \"hasConstituent\"", + "evalue": "Unit 'MetreSquare' is not defined or cannot be loaded.", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32mc:\\Myenv\\cold\\src\\cold\\models\\autogenerated\\MeasurementUnitModule.py:63\u001b[0m, in \u001b[0;36mMeasurementUnit.from_class_name\u001b[1;34m(cls, unit)\u001b[0m\n\u001b[0;32m 62\u001b[0m module_name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00munit\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124mModule\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;66;03m# Assumes module naming convention matches\u001b[39;00m\n\u001b[1;32m---> 63\u001b[0m module \u001b[38;5;241m=\u001b[39m \u001b[43mimportlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimport_module\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m.\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mmodule_name\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpackage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;18;43m__module__\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrsplit\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m.\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 65\u001b[0m \u001b[38;5;66;03m# Get the class from the module\u001b[39;00m\n", + "File \u001b[1;32mC:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\Lib\\importlib\\__init__.py:126\u001b[0m, in \u001b[0;36mimport_module\u001b[1;34m(name, package)\u001b[0m\n\u001b[0;32m 125\u001b[0m level \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m--> 126\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_bootstrap\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_gcd_import\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m[\u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m:\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpackage\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m:1204\u001b[0m, in \u001b[0;36m_gcd_import\u001b[1;34m(name, package, level)\u001b[0m\n", + "File \u001b[1;32m:1176\u001b[0m, in \u001b[0;36m_find_and_load\u001b[1;34m(name, import_)\u001b[0m\n", + "File \u001b[1;32m:1140\u001b[0m, in \u001b[0;36m_find_and_load_unlocked\u001b[1;34m(name, import_)\u001b[0m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'cold.models.autogenerated.MetreSquareModule'", + "\nThe above exception was the direct cause of the following exception:\n", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[6], line 18\u001b[0m\n\u001b[0;32m 15\u001b[0m cell \u001b[38;5;241m=\u001b[39m cold\u001b[38;5;241m.\u001b[39mBatteryCell()\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m#Separator.hasConstituent = Separator\u001b[39;00m\n\u001b[0;32m 17\u001b[0m \u001b[38;5;66;03m# Assign the parts of the coating\u001b[39;00m\n\u001b[1;32m---> 18\u001b[0m \u001b[43mpe_coating\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhasConstituent\u001b[49m \u001b[38;5;241m=\u001b[39m pe_am\n\u001b[0;32m 19\u001b[0m pe_coating\u001b[38;5;241m.\u001b[39mhasBinder \u001b[38;5;241m=\u001b[39m pe_binder\n\u001b[0;32m 20\u001b[0m pe_coating\u001b[38;5;241m.\u001b[39mhasConstituent \u001b[38;5;241m=\u001b[39m pe_additive\n", - "File \u001b[1;32mc:\\Myenv\\Lib\\site-packages\\pydantic\\main.py:926\u001b[0m, in \u001b[0;36mBaseModel.__setattr__\u001b[1;34m(self, name, value)\u001b[0m\n\u001b[0;32m 923\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_validator__\u001b[38;5;241m.\u001b[39mvalidate_assignment(\u001b[38;5;28mself\u001b[39m, name, value)\n\u001b[0;32m 924\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 925\u001b[0m \u001b[38;5;66;03m# TODO - matching error\u001b[39;00m\n\u001b[1;32m--> 926\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m object has no field \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 927\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mextra\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mallow\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__pydantic_fields__:\n\u001b[0;32m 928\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel_extra:\n", - "\u001b[1;31mValueError\u001b[0m: \"Coating\" object has no field \"hasConstituent\"" + "Cell \u001b[1;32mIn[7], line 33\u001b[0m\n\u001b[0;32m 30\u001b[0m ne\u001b[38;5;241m.\u001b[39mhasCoating \u001b[38;5;241m=\u001b[39m ne_coating\n\u001b[0;32m 31\u001b[0m ne\u001b[38;5;241m.\u001b[39mhasCurrentCollector \u001b[38;5;241m=\u001b[39m copper\n\u001b[0;32m 32\u001b[0m copper\u001b[38;5;241m.\u001b[39mhasProperty[\n\u001b[1;32m---> 33\u001b[0m \u001b[43mcold\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArea\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m25e-4\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mMetreSquare\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m### units need to be sorted\u001b[39;00m\n\u001b[0;32m 34\u001b[0m ]\n\u001b[0;32m 35\u001b[0m d\u001b[38;5;241m=\u001b[39mcold\u001b[38;5;241m.\u001b[39mDiffusivity(\u001b[38;5;241m2e-15\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMetre\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 36\u001b[0m d\u001b[38;5;241m.\u001b[39mcomment\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.google.com/search?q=chemical+substances+ontology&rlz=1C1CHZN_enDE966DE966&oq=&gs_lcrp=EgZjaHJvbWUqCQgAECMYJxjqAjIJCAAQIxgnGOoCMgkIARAjGCcY6gIyCQgCECMYJxjqAjIJCAMQIxgnGOoCMgkIBBAjGCcY6gIyCQgFECMYJxjqAjIJCAYQIxgnGOoCMgkIBxAjGCcY6gLSAQsxNTM0ODEwajBqN6gCCLACAQ&sourceid=chrome&ie=UTF-8\u001b[39m\u001b[38;5;124m'\u001b[39m\n", + "File \u001b[1;32mc:\\Myenv\\cold\\src\\cold\\models\\autogenerated\\PropertyModule.py:83\u001b[0m, in \u001b[0;36mProperty.__init__\u001b[1;34m(self, value, unit, **kwargs)\u001b[0m\n\u001b[0;32m 81\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Override __init__ for simplified instantiation.\"\"\"\u001b[39;00m \n\u001b[0;32m 82\u001b[0m \u001b[38;5;66;03m# Dynamically create a MeasurementUnit instance \u001b[39;00m\n\u001b[1;32m---> 83\u001b[0m unit_instance \u001b[38;5;241m=\u001b[39m \u001b[43mMeasurementUnit\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_class_name\u001b[49m\u001b[43m(\u001b[49m\u001b[43munit\u001b[49m\u001b[43m)\u001b[49m \n\u001b[0;32m 84\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[0;32m 85\u001b[0m hasNumericalPart\u001b[38;5;241m=\u001b[39mNumericalPart(hasNumericalValue\u001b[38;5;241m=\u001b[39mvalue),\n\u001b[0;32m 86\u001b[0m hasMeasurementUnit\u001b[38;5;241m=\u001b[39munit_instance,\n\u001b[0;32m 87\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 88\u001b[0m )\n", + "File \u001b[1;32mc:\\Myenv\\cold\\src\\cold\\models\\autogenerated\\MeasurementUnitModule.py:71\u001b[0m, in \u001b[0;36mMeasurementUnit.from_class_name\u001b[1;34m(cls, unit)\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m unit_class()\n\u001b[0;32m 70\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mModuleNotFoundError\u001b[39;00m, \u001b[38;5;167;01mAttributeError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m---> 71\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnit \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00munit\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m is not defined or cannot be loaded.\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", + "\u001b[1;31mValueError\u001b[0m: Unit 'MetreSquare' is not defined or cannot be loaded." ] } ], "source": [ - "pe_am = cold.LithiumNickelManganeseCobaltOxide()\n", - "pe_additive = cold.CarbonBlack()\n", - "pe_binder = cold.PolyvinylideneFluoride()\n", - "pe_current_collector = cold.CurrentCollector()\n", - "pe_coating = cold.Coating()\n", - "ne_am = cold.Graphite()\n", - "ne_additive = cold.CarbonBlack()\n", - "ne_binder = cold.CarboxymethylCellulose()\n", - "ne_current_collector = cold.CurrentCollector()\n", - "ne_coating = cold.Coating()\n", + "# Bill of materials\n", + "\n", + "nmc = cold.LithiumNickelManganeseCobaltOxide()\n", + "carbon_black = cold.CarbonBlack()\n", + "pvdf = cold.PolyvinylideneFluoride()\n", + "copper = cold.Copper()\n", + "graphite = cold.Graphite()\n", + "cmc = cold.CarboxymethylCellulose()\n", + "aluminium = cold.Aluminium()\n", "electrolyte = cold.OrganicElectrolyte()\n", - "Separator = cold.Separator()\n", - "se_coating = cold.Coating()\n", + "separator = cold.Separator()\n", "case = cold.R18650()\n", - "cell = cold.BatteryCell()\n", - "#Separator.hasConstituent = Separator\n", - "# Assign the parts of the coating\n", - "pe_coating.hasConstituent = pe_am\n", - "pe_coating.hasBinder = pe_binder\n", - "pe_coating.hasConstituent = pe_additive\n", "\n", + "# Assign the parts of the coating\n", + "pe_coating = cold.ElectrodeCoating()\n", + "pe_coating.hasActiveMaterial = nmc\n", + "pe_coating.hasBinder = pvdf\n", + "pe_coating.hasAdditive = carbon_black\n", "\n", "# Assign the parts of the electrode\n", - "pe = cold.Electrode()\n", + "pe = cold.CoatedElectrode()\n", "pe.hasCoating = pe_coating\n", - "pe_coating.hasProperty=[\n", - " cold.Porosity(-0.1, \"UnitOne\"),\n", - " cold.Thickness(25e-6, \"UnitOne\")\n", - "]\n", - "\n", - "pe.hasCurrentCollector = pe_current_collector\n", - "pe_current_collector.hasProperty=[\n", - " cold.Area(25e-4, \"MetreSquare\")\n", - "]\n", + "pe.hasCurrentCollector = aluminium\n", "\n", - "#cold.Expression('f(x,y) = x^2+3y', [cold.Variable('x', cold.Length), cold.Variable('y', cold.Mass)])\n", + "ne_coating = cold.ElectrodeCoating()\n", + "ne_coating.hasActiveMaterial = graphite\n", + "ne_coating.hasBinder = cmc\n", "\n", - "pe_am.hasProperty = [\n", - " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", - " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\"),\n", - " cold.BruggemanCoefficient(3.06149286969267, \"UnitOne\"),\n", - " cold.VolumeFraction(0.2, \"UnitOne\"),\n", - " cold.OpenCircuitPotential(function, \"Volt\"), ###update when handling functon\n", - " cold.ActiveMaterialVolumeFraction(0.12, \"UnitOne\")] ###update variable Not In emmo repo ??\n", - "\n", - "ne = cold.Electrode()\n", + "ne = cold.CoatedElectrode()\n", "ne.hasCoating = ne_coating\n", - "\n", - "ne_coating.hasProperty=[\n", - " cold.Porosity(-0.1, \"UnitOne\"),\n", - " cold.Thickness(45e-6, \"UnitOne\")\n", + "ne.hasCurrentCollector = copper\n", + "copper.hasProperty[\n", + " cold.Area(25e-4, \"MetreSquare\") ### units need to be sorted\n", "]\n", - "\n", - "ne.hasCurrentCollector = ne_current_collector\n", - "ne_current_collector.hasProperty=[\n", - " cold.CurrentCollector(25e-4, \"MetreSquare\")\n", + "d=cold.Diffusivity(2e-15, \"Metre\")\n", + "d.comment='https://www.google.com/search?q=chemical+substances+ontology&rlz=1C1CHZN_enDE966DE966&oq=&gs_lcrp=EgZjaHJvbWUqCQgAECMYJxjqAjIJCAAQIxgnGOoCMgkIARAjGCcY6gIyCQgCECMYJxjqAjIJCAMQIxgnGOoCMgkIBBAjGCcY6gIyCQgFECMYJxjqAjIJCAYQIxgnGOoCMgkIBxAjGCcY6gLSAQsxNTM0ODEwajBqN6gCCLACAQ&sourceid=chrome&ie=UTF-8'\n", + "nmc.hasProperty = [\n", + " cold.ParticleRadius(5.5e-6, \"Metre\",comment='test'), ##general placeholder for adding material e.g. link, description\n", + " d,\n", + " cold.Porosity(-0.1, \"UnitOne\"),\n", + " cold.Thickness(25e-6, \"UnitOne\"),\n", + " #cold.CurrentCollector(25e-4, \"MetreSquare\"),\n", + " cold.BruggemanCoefficient(3.06149286969267, \"UnitOne\"),\n", + " cold.VolumeFraction(0.2, \"UnitOne\")\n", "]\n", "\n", - "ne_am.hasProperty = [\n", - " cold.ParticleRadius(5.5e-6, \"Metre\"),\n", - " cold.Diffusivity(2e-15, \"MetreSquarePerSecond\"),\n", - " cold.BruggemanCoefficient(2.723578079404257, \"UnitOne\"),\n", - " cold.VolumeFraction(0.1, \"UnitOne\"), ###update when handling functon\n", - " cold.OpenCircuitPotential(function, \"Volt\")] ###### update for function\n", - "\n", - "#se = cold.Seperator()\n", - "Separator.hasCoating = se_coating\n", - "se_coating.hasProperty=[\n", - " cold.Porosity(0.55, \"UnitOne\"),\n", - " cold.Thickness(25e-6, \"UnitOne\")\n", - "]\n", + "cell = cold.BatteryCell(\n", + " hasCase=case,\n", + " hasElectrode=pe,\n", + " hasElectrolyte=electrolyte)\n", "\n", "# Serialize to JSON-LD\n", - "json_ld = pe_am.to_jsonld()\n", - "print(json.dumps(json_ld, indent=4))\n", - "\n", - "\n", - "# Serialize to JSON-LD\n", - "json_ld = pe_am.to_jsonld()\n", + "json_ld = cell.to_jsonld()\n", "print(json.dumps(json_ld, indent=4))\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From ee3e077b357bb4b703f8141d20cd3ef2adb227ea Mon Sep 17 00:00:00 2001 From: John Mugisa Date: Fri, 29 Nov 2024 14:36:16 +0100 Subject: [PATCH 6/6] updated added example of writing a function in jsonld --- examples/JSON_ld_parameters_example.json | 1734 ++++++++++++++++++++++ 1 file changed, 1734 insertions(+) create mode 100644 examples/JSON_ld_parameters_example.json diff --git a/examples/JSON_ld_parameters_example.json b/examples/JSON_ld_parameters_example.json new file mode 100644 index 0000000..70f6f64 --- /dev/null +++ b/examples/JSON_ld_parameters_example.json @@ -0,0 +1,1734 @@ +{ + "@context": "https://w3id.org/emmo/domain/battery/context", + "@graph": [ + { + "@id": "https://www.batterymodel.org/parameters/m309c-ed93mdp3d", + "@type": "BatteryCell", + "schema:isBasedOn": { + "@id": [ + "https://doi.org/10.1149/1945-7111/ab9050" + ] + }, + "hasProperty": [ + { + "rdfs:label": "n_to_p_ratio", + "@type": "NPRatio", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.07 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "cell_mass", + "@type": "Mass", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 37.33774424320001 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "g", + "@type": "emmo:Gram" + } + }, + { + "rdfs:label": "nominal_cell_capacity", + "@type": "NominalCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2017.6430124379945 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mAh", + "@type": "emmo:AmpereHour" + } + }, + { + "rdfs:label": "round_trip_efficiency", + "@type": "EnergyEfficiency", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": null + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "specific_energy", + "@type": "DischargingSpecificEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": null + }, + "hasMeasurementUnit": { + "hasSymbolValue": "Wh\u00b7kg\u207b\u00b9", + "@type": "emmo:WattHourPerKilogram" + } + }, + { + "rdfs:label": "discharge_energy", + "@type": "DischargingEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": null + }, + "hasMeasurementUnit": { + "hasSymbolValue": "Wh", + "@type": "emmo:WattHour" + } + }, + { + "rdfs:label": "number_parallel_electrode_pairs_within_cell", + "@type": "XXX", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + } + ], + "hasNegativeElectrode": { + "rdfs:label": "negative_electrode", + "@type": "NegativeElectrode", + "hasProperty": [ + { + "rdfs:label": "length", + "@type": "Length", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.8 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "width", + "@type": "Width", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.065 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "electrode_capacity", + "@type": "Capacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2158.1611092334356 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mAh", + "@type": "emmo:MilliAmpereHour" + } + } + ], + "hasCoating": { + "rdfs:label": "negative_electrode_coating", + "@type": "Coating", + "hasProperty": [ + { + "rdfs:label": "coating_thickness", + "@type": "Thickness", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 85.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "\u03bcm", + "@type": "emmo:MicroMetre" + } + }, + { + "rdfs:label": "coating_porosity", + "@type": "Porosity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.2 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "mass_loading", + "@type": "MassLoading", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 15.0484 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mg\u00b7cm\u207b\u00b2", + "@type": "emmo:MiliGramPerCubicCentiMeter" + } + }, + { + "rdfs:label": "bruggeman_coefficient", + "@type": "BruggemanCoefficient", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.5 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "number_of_discrete_cells_electrode", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 20 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + } + ], + "hasActiveMaterial": { + "rdfs:label": "negative_electrode_active_material", + "@type": ["ActiveMaterial", "Graphite", "SiliconOxide"], + "hasProperty": [ + { + "rdfs:label": "maximum_concentration", + "@type": "MaximumConcentration", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 29583.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mol\u00b7m\u207b\u00b3", + "@type": "emmo:MolePerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "volumetric_surface_area", + "@type": "VolumetricSurfaceArea", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 383959.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m\u00b2m\u207b\u00b3", + "@type": "emmo:Metre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2260.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 632.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "maximum_lithium_stoichiometry", + "@type": "MaximumStoichiometricCoefficient", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.9014 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "minimum_lithium_stoichiometry", + "@type": "MinimumStoichiometricCoefficient", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.0279 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "open_circuit_potential", + "@type": ["OpenCircuitVoltage", "Expression"], + "hasStringPart": { + "@type": "String", + "rdfs:label": "computeOCP_Graphite_SiOx_Chen2020", + "hasStringValue": "1.9793 * exp(-39.3631*(c/cmax)) + 0.2482 - 0.0909 * tanh(29.8538*((c/cmax) - 0.1234)) - 0.04478 * tanh(14.9159*((c/cmax) - 0.2769)) - 0.0205 * tanh(30.4444*((c/cmax) - 0.6103))" + }, + "hasVariable": [ + "c", + "cmax" + ], + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + } + }, + { + "rdfs:label": "activation_energy_of_diffusion", + "@type": "ActivationEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 5000.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7mol\u207b\u00b9\u00b7", + "@type": "emmo:JoulePerMole" + } + }, + { + "rdfs:label": "diffusion_pre_exponential_factor", + "@type": null, + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 3.9e-14 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "s\u207b\u00b9", + "@type": "emmo:ReciprocalSecond" + } + }, + { + "rdfs:label": "particle_radius", + "@type": "ParticleRadius", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1e-06 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.9 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.04 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "number_of_discrete_cells_particle_radius", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 10 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "specific_capacity", + "@type": "SpecificCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 306.44157263296455 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mAh\u00b7g\u207b\u00b9", + "@type": "emmo:MilliAmpereHourPerGram" + } + } + ] + }, + "hasBinder": { + "rdfs:label": "negative_electrode_binder", + "@type": ["Binder", "CarboxymethylCellulose"], + "hasProperty": [ + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1780.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1400.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.165 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.05 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + } + } + ] + }, + "hasConductiveAdditive": { + "rdfs:label": "negative_electrode_conductive_additive", + "@type": ["ConductiveAdditive","CarbonBlack"], + "hasProperty": [ + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1800.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 300.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.5 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.05 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + } + } + ] + } + }, + "hasCurrentCollector": { + "rdfs:label": "negative_electrode_current_collector", + "@type": ["CurrentCollector", "Copper", "Foil"], + "hasProperty": [ + { + "rdfs:label": "current_collector_thickness", + "@type": "Thickness", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 12.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "\u03bcm", + "@type": "emmo:MicroMetre" + } + } + ] + }, + "@reverse": { + "hasParticipant": { + "@type": "ElectrodeReaction", + "rdfs:label": "negative_electrode_reaction", + "hasProperty": [ + { + "rdfs:label": "number_of_electrons_transferred", + "@type": "NumberOfElectronsTransferred", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "activation_energy_of_reaction", + "@type": "ActivationEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 35000.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7mol\u207b\u00b9\u00b7", + "@type": "emmo:JoulePerMole" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "reaction_rate_constant", + "@type": "ReactionRateConstant", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 6.716e-12 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mol\u00b7m\u207b\u00b2\u00b7s\u207b\u00b9", + "@type": "emmo:MolePerSquareMetrePerSecond" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + } + ] + } + } + }, + "hasPositiveElectrode": { + "rdfs:label": "positive_electrode", + "@type": "PositiveElectrode", + "hasProperty": [ + { + "rdfs:label": "length", + "@type": "Length", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.8 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "width", + "@type": "Width", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.065 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "electrode_capacity", + "@type": "Capacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2017.6430124379945 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mAh", + "@type": "emmo:MilliAmpereHour" + } + } + ], + "hasCoating": { + "@type": "Coating", + "rdfs:label": "positive_electrode_coating", + "hasProperty": [ + { + "rdfs:label": "coating_thickness", + "@type": "Thickness", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 76.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "\u03bcm", + "@type": "emmo:MicroMetre" + } + }, + { + "rdfs:label": "coating_porosity", + "@type": "Porosity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.32 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "mass_loading", + "@type": "MassLoading", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 23.948511999999994 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mg\u00b7cm\u207b\u00b2", + "@type": "emmo:MiliGramPerCubicCentiMeter" + } + }, + { + "rdfs:label": "bruggeman_coefficient", + "@type": "BruggemanCoefficient", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.5 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "number_of_discrete_cells_electrode", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 20 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + } + ], + "hasActiveMaterial": { + "rdfs:label": "positive_electrode_active_material", + "@type": ["ActiveMaterial", "LithiumNickelManganeseCobaltOxide"], + "hasProperty": [ + { + "rdfs:label": "maximum_concentration", + "@type": "MaximumConcentration", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 51765.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mol\u00b7m\u207b\u00b3", + "@type": "emmo:MolePerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "volumetric_surface_area", + "@type": "VolumetricSurfaceArea", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 382183.9 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m\u00b2m\u207b\u00b3", + "@type": "emmo:Metre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 4950.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "maximum_lithium_stoichiometry", + "@type": "StoichiometricCoefficientAtSOC100", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.2661 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "minimum_lithium_stoichiometry", + "@type": "StoichiometricCoefficientAtSOC0", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.9084 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "open_circuit_potential", + "@type": ["OpenCircuitVoltage", "Expression"], + "hasStringPart": { + "@type": "String", + "rdfs:label": "computeOCP_NMC811_Chen2020", + "hasStringValue": "-0.8090 * (c/cmax) + 4.4875 - 0.0428 * tanh(18.5138*((c/cmax) - 0.5542)) - 17.7326 * tanh(15.7890*((c/cmax) - 0.3117)) + 17.5842 * tanh(15.9308*((c/cmax) - 0.3120))" + }, + "hasVariable": [ + "c", + "cmax" + ], + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 632.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + }, + "schema:citation": { + "@id": [ + null + ] + } + }, + { + "rdfs:label": "activation_energy_of_diffusion", + "@type": "ActivationEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 5000.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7mol\u207b\u00b9\u00b7", + "@type": "emmo:JoulePerMole" + }, + "schema:citation": { + "@id": [ + null + ] + } + }, + { + "rdfs:label": "diffusion_pre_exponential_factor", + "@type": null, + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 3.9e-14 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "s\u207b\u00b9", + "@type": "emmo:ReciprocalSecond" + } + }, + { + "rdfs:label": "particle_radius", + "@type": "ParticleRadius", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1e-06 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m", + "@type": "emmo:Metre" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.9 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2.1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "number_of_discrete_cells_particle_radius", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 10 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "specific_capacity", + "@type": "SpecificCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 180.01966126454545 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mAh\u00b7g\u207b\u00b9", + "@type": "emmo:MilliAmpereHourPerGram" + } + } + ] + }, + "hasBinder": { + "rdfs:label": "positive_electrode_binder", + "@type": ["Binder", "PolyvinylideneFluoride"], + "hasProperty": [ + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1780.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1400.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.165 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.05 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + } + } + ] + }, + "hasConductiveAdditive": { + "rdfs:label": "Additive", + "@type": ["ConductiveAdditive", "CarbonBlack"], + "hasProperty": [ + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1800.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 300.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.5 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + } + }, + { + "rdfs:label": "mass_fraction", + "@type": "MassFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.05 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "electronic_conductivity", + "@type": "ElectronicConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 100.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "S\u00b7m\u207b\u00b9", + "@type": "emmo:SiemensPerMetre" + } + } + ] + } + }, + "hasCurrentCollector": { + "rdfs:label": "positive_electrode_current_collector", + "@type": ["CurrentCollector", "Aluminium", "Foil"], + "hasProperty": [ + { + "rdfs:label": "positive_electrode_current_collector_thickness", + "@type": "Thickness", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 16.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "\u03bcm", + "@type": "emmo:MicroMetre" + } + } + ] + }, + "@reverse": { + "hasParticipant": { + "@type": "ElectrodeReaction", + "rdfs:label": "positive_electrode_reaction", + "hasProperty": [ + { + "rdfs:label": "number_of_electrons_transferred", + "@type": "NumberOfElectronsTransferred", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "activation_energy_of_reaction", + "@type": "ActivationEnergy", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 17800.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7mol\u207b\u00b9\u00b7", + "@type": "emmo:JoulePerMole" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "reaction_rate_constant", + "@type": "ReactionRateConstant", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 3.545e-11 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "mol\u00b7m\u207b\u00b2\u00b7s\u207b\u00b9", + "@type": "emmo:MolePerSquareMetrePerSecond" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + } + ] + } + } + }, + "hasElectrolyte": { + "rdfs:label": "electrolyte", + "@type": "OrganicElectrolyte", + "hasSolvent": { + "@type": "Solvent", + "hasConstituent": [ + { + "@type": "EthyleneCarbonate", + "hasProperty": [ + { + "@type": "VolumeFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.3 + }, + "hasMeasurementUnit": { + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050#jesab9050s3-8" + } + } + ] + }, + { + "@type": "EthylMethylCarbonate", + "hasProperty": [ + { + "@type": "VolumeFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.7 + }, + "hasMeasurementUnit": { + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050#jesab9050s3-8" + } + } + ] + }, + { + "@type": "VinyleneCarbonate", + "hasProperty": [ + { + "@type": "VolumeFraction", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.01 + }, + "hasMeasurementUnit": { + "@type": "emmo:MassFraction" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050#jesab9050s3-8" + } + } + ] + } + ] + }, + "hasSolute": { + "@type": "LithiumHexafluorophosphate", + "hasProperty": [ + { + "@type": "AmountConcentration", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "@type": "emmo:MolePerLitre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050#jesab9050s3-8" + } + } + ] + }, + "hasConstituent": [ + { + "@type": ["ChargeCarrierIon", "LithiumIon"], + "hasProperty": [ + { + "rdfs:label": "charge_carrier_charge_number", + "@type": "ChargeNumber", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "charge_carrier_transference_number", + "@type": "IonTransportNumber", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.2594 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + } + ] + }, + { + "@type": ["CounterIon", "Hexafluorophosphate"], + "hasProperty": [ + { + "rdfs:label": "counter_ion_charge_number", + "@type": "ChargeNumber", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": -1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "counter_ion_transference_number", + "@type": "IonTransportNumber", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.7406 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "UnitOne" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + } + ] + } + ], + "hasProperty": [ + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1518.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.099 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1200 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "conductivity", + "@type": ["ElectrolyticConductivity", "Expression"], + "hasStringPart": { + "@type": "String", + "rdfs:label": "computeElectrolyteConductivity_Chen2020", + "hasStringValue": "0.1297*(c/1000)^3 - 2.51*(c/1000)^(1.5) + 3.329*(c/1000)" + }, + "hasVariable": [ + "c" + ], + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "diffusion_coefficient", + "@type": ["DiffusionCoefficient", "Expression"], + "hasStringPart": { + "@type": "String", + "rdfs:label": "computeDiffusionCoefficient_Chen2020", + "hasStringValue": "8.794*10^(-11)*(c/1000)^2 - 3.972*10^(-10)*(c/1000) + 4.862*10^(-10)" + }, + "hasVariable": [ + "c" + ], + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + } + ] + }, + "hasSeparator": { + "rdfs:label": "separator", + "@type": "Separator", + "hasProperty": [ + { + "rdfs:label": "bruggeman_coefficient", + "@type": "BruggemanCoefficient", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.5 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "specific_heat_capacity", + "@type": "SpecificHeatCapacity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1692.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "J\u00b7kg\u207b\u00b9.K\u207b\u00b9", + "@type": "emmo:JoulePerKiloGramKelvin" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "thermal_conductivity", + "@type": "ThermalConductivity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.334 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b9.K\u207b\u00b9", + "@type": "emmo:WattPerMetreKelvin" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "density", + "@type": "Density", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 946.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "kg\u00b7m\u207b\u00b3", + "@type": "emmo:GramPerCubicMetre" + }, + "schema:citation": { + "@id": "https://doi.org/10.1149/1945-7111/ab9050" + } + }, + { + "rdfs:label": "thickness", + "@type": "Thickness", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 15.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "\u03bcm", + "@type": "emmo:MicroMetre" + } + }, + { + "rdfs:label": "porosity", + "@type": "Porosity", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.4 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "number_of_discrete_cells_separator", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 10 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + } + ] + }, + "hasCase": { + "rdfs:label": "battery_cell_case", + "@type": "R18650", + "hasProperty": [ + { + "rdfs:label": "packing_mass", + "@type": "Mass", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 11.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "g", + "@type": "emmo:Gram" + } + }, + { + "rdfs:label": "external_surface_area", + "@type": "SurfaceArea", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.0379 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "m\u00b2", + "@type": "emmo:SquareMetre" + } + } + ] + }, + "hasModel": { + "@type": "PseudoTwoDimensionalModel", + "hasProperty": [ + { + "rdfs:label": "ambient_temperature", + "@type": "AmbientThermodynamicTemperature", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 298.15 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "K", + "@type": "emmo:Kelvin" + } + }, + { + "rdfs:label": "initial_temperature", + "@type": "InititalThermodynamicTemperature", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 298.15 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "K", + "@type": "emmo:Kelvin" + } + }, + { + "rdfs:label": "external_heat_transfer_coefficient", + "@type": "SurfaceCoefficientOfHeatTransfer", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1000.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "W\u00b7m\u207b\u00b2\u00b7K\u207b\u00b9", + "@type": "emmo:WattPerSquareMetreKelvin" + } + }, + { + "rdfs:label": "use_thermal", + "@type": "Parameter", + "hasNumericalPart": { + "@type": "Boolean", + "hasNumericalValue": 0 + } + }, + { + "rdfs:label": "include_current_collector", + "@type": "Parameter", + "hasNumericalPart": { + "@type": "Boolean", + "hasNumericalValue": 0 + } + }, + { + "rdfs:label": "use_solid_diffusion_model", + "@type": "Parameter", + "hasNumericalPart": { + "@type": "Boolean", + "hasNumericalValue": 1 + } + }, + { + "rdfs:label": "solid_diffusion_model_type", + "@type": "Parameter", + "hasStringPart": { + "@type": "String", + "hasStringValue": "full" + } + }, + { + "rdfs:label": "use_ramp_up", + "@type": "Parameter", + "hasNumericalPart": { + "@type": "Boolean", + "hasNumericalValue": 1 + } + } + ] + }, + "hasBoundaryConditions": { + "rdfs:label": "Boundary conditions", + "@type": "battery:BoundaryConditions", + "hasProperty": [ + + ] + }, + "hasCyclingProcess": { + "rdfs:label": "Protocol properties", + "@type": "CyclingProcess", + "hasProperty": [ + { + "rdfs:label": "initial_step_type", + "@type": null, + "hasStringPart": { + "@type": "String", + "hasStringValue": "charging" + } + }, + { + "rdfs:label": "initial_state_of_charge", + "@type": "StateOfCharge", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.01 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "number_of_cycles", + "@type": "NumberOfEntities", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "d_rate", + "@type": "DischargingCRate", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "c_rate", + "@type": "CRate", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 1.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "1", + "@type": "emmo:UnitOne" + } + }, + { + "rdfs:label": "lower_cutoff_voltage", + "@type": "LowerVoltageLimit", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 2.4 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "V", + "@type": "emmo:Volt" + } + }, + { + "rdfs:label": "upper_cutoff_voltage", + "@type": "UpperVoltageLimit", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 4.1 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "V", + "@type": "emmo:Volt" + } + }, + { + "rdfs:label": "protocol_name", + "@type": "Cycling", + "hasStringPart": { + "@type": "String", + "hasStringValue": "CCCV" + } + }, + { + "rdfs:label": "d_idt_limit", + "@type": null, + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.0001 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "A\u00b7s\u207b\u00b9", + "@type": null + } + }, + { + "rdfs:label": "d_edt_limit", + "@type": null, + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 0.01 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "V\u00b7s\u207b\u00b9", + "@type": "emmo:VoltPerSecond" + } + }, + { + "rdfs:label": "time_step_duration", + "@type": "StepDuration", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 30.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "s", + "@type": "emmo:Second" + } + }, + { + "rdfs:label": "number_of_ramp_up_steps", + "@type": "['LinearCurrentRamp', 'NumberOfEntities']", + "hasNumericalPart": { + "@type": "Real", + "hasNumericalValue": 5.0 + }, + "hasMeasurementUnit": { + "hasSymbolValue": "s", + "@type": "emmo:Second" + } + } + ] + } + } + ] +} \ No newline at end of file