From 9ec373ac08f9e19172fcfe06f3232bd5a91734eb Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Wed, 7 Aug 2024 12:31:39 -0400 Subject: [PATCH] Add template for MIRO checklist extraction --- src/ontogpt/templates/miro.py | 294 ++++++++++++++++++++++++++++++ src/ontogpt/templates/miro.yaml | 307 ++++++++++++++++++++++++++++++++ 2 files changed, 601 insertions(+) create mode 100644 src/ontogpt/templates/miro.py create mode 100644 src/ontogpt/templates/miro.yaml diff --git a/src/ontogpt/templates/miro.py b/src/ontogpt/templates/miro.py new file mode 100644 index 000000000..eb9600a5e --- /dev/null +++ b/src/ontogpt/templates/miro.py @@ -0,0 +1,294 @@ +from __future__ import annotations +from datetime import ( + datetime, + date +) +from decimal import Decimal +from enum import Enum +import re +import sys +from typing import ( + Any, + ClassVar, + List, + Literal, + Dict, + Optional, + Union +) +from pydantic.version import VERSION as PYDANTIC_VERSION +if int(PYDANTIC_VERSION[0])>=2: + from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator + ) +else: + from pydantic import ( + BaseModel, + Field, + validator + ) + +metamodel_version = "None" +version = "None" + + +class ConfiguredBaseModel(BaseModel): + model_config = ConfigDict( + validate_assignment = True, + validate_default = True, + extra = "forbid", + arbitrary_types_allowed = True, + use_enum_values = True, + strict = False, + ) + pass + + + + +class LinkMLMeta(RootModel): + root: Dict[str, Any] = {} + model_config = ConfigDict(frozen=True) + + def __getattr__(self, key:str): + return getattr(self.root, key) + + def __getitem__(self, key:str): + return self.root[key] + + def __setitem__(self, key:str, value): + self.root[key] = value + + def __contains__(self, key:str) -> bool: + return key in self.root + + +linkml_meta = LinkMLMeta({'default_prefix': 'miro', + 'default_range': 'string', + 'description': 'A template for extracting the minimal information for ' + 'reporting an ontology, as per the MIRO guidelines. See ' + 'doi:10.1186/s13326-017-0172-7 The target for this template ' + 'should be a report or publication describing a single ' + 'ontology.', + 'id': 'http://w3id.org/ontogpt/miro', + 'imports': ['linkml:types', 'core'], + 'license': 'https://creativecommons.org/publicdomain/zero/1.0/', + 'name': 'miro', + 'prefixes': {'linkml': {'prefix_prefix': 'linkml', + 'prefix_reference': 'https://w3id.org/linkml/'}, + 'onto_usage': {'prefix_prefix': 'onto_usage', + 'prefix_reference': 'http://w3id.org/ontogpt/onto_usage'}, + 'rdf': {'prefix_prefix': 'rdf', + 'prefix_reference': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'}}, + 'source_file': 'src/ontogpt/templates/miro.yaml', + 'title': 'MIRO Extraction Template'} ) + +class NullDataOptions(str, Enum): + UNSPECIFIED_METHOD_OF_ADMINISTRATION = "UNSPECIFIED_METHOD_OF_ADMINISTRATION" + NOT_APPLICABLE = "NOT_APPLICABLE" + NOT_MENTIONED = "NOT_MENTIONED" + + + +class ExtractionResult(ConfiguredBaseModel): + """ + A result of extracting knowledge on text + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core'}) + + input_id: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'input_id', 'domain_of': ['ExtractionResult']} }) + input_title: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'input_title', 'domain_of': ['ExtractionResult']} }) + input_text: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'input_text', 'domain_of': ['ExtractionResult']} }) + raw_completion_output: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'raw_completion_output', 'domain_of': ['ExtractionResult']} }) + prompt: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'prompt', 'domain_of': ['ExtractionResult']} }) + extracted_object: Optional[Any] = Field(None, description="""The complex objects extracted from the text""", json_schema_extra = { "linkml_meta": {'alias': 'extracted_object', 'domain_of': ['ExtractionResult']} }) + named_entities: Optional[List[Any]] = Field(default_factory=list, description="""Named entities extracted from the text""", json_schema_extra = { "linkml_meta": {'alias': 'named_entities', 'domain_of': ['ExtractionResult']} }) + + +class NamedEntity(ConfiguredBaseModel): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'http://w3id.org/ontogpt/core'}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + + +class CompoundExpression(ConfiguredBaseModel): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'http://w3id.org/ontogpt/core'}) + + pass + + +class Triple(CompoundExpression): + """ + Abstract parent for Relation Extraction tasks + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'http://w3id.org/ontogpt/core'}) + + subject: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'subject', 'domain_of': ['Triple']} }) + predicate: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'predicate', 'domain_of': ['Triple']} }) + object: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'object', 'domain_of': ['Triple']} }) + qualifier: Optional[str] = Field(None, description="""A qualifier for the statements, e.g. \"NOT\" for negation""", json_schema_extra = { "linkml_meta": {'alias': 'qualifier', 'domain_of': ['Triple']} }) + subject_qualifier: Optional[str] = Field(None, description="""An optional qualifier or modifier for the subject of the statement, e.g. \"high dose\" or \"intravenously administered\"""", json_schema_extra = { "linkml_meta": {'alias': 'subject_qualifier', 'domain_of': ['Triple']} }) + object_qualifier: Optional[str] = Field(None, description="""An optional qualifier or modifier for the object of the statement, e.g. \"severe\" or \"with additional complications\"""", json_schema_extra = { "linkml_meta": {'alias': 'object_qualifier', 'domain_of': ['Triple']} }) + + +class TextWithTriples(ConfiguredBaseModel): + """ + A text containing one or more relations of the Triple type. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core'}) + + publication: Optional[Publication] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'publication', 'domain_of': ['TextWithTriples', 'TextWithEntity']} }) + triples: Optional[List[Triple]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'triples', 'domain_of': ['TextWithTriples']} }) + + +class TextWithEntity(ConfiguredBaseModel): + """ + A text containing one or more instances of a single type of entity. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core'}) + + publication: Optional[Publication] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'publication', 'domain_of': ['TextWithTriples', 'TextWithEntity']} }) + entities: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'entities', 'domain_of': ['TextWithEntity']} }) + + +class RelationshipType(NamedEntity): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core', + 'id_prefixes': ['RO', 'biolink']}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + + +class Publication(ConfiguredBaseModel): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core'}) + + id: Optional[str] = Field(None, description="""The publication identifier""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'domain_of': ['NamedEntity', 'Publication']} }) + title: Optional[str] = Field(None, description="""The title of the publication""", json_schema_extra = { "linkml_meta": {'alias': 'title', 'domain_of': ['Publication']} }) + abstract: Optional[str] = Field(None, description="""The abstract of the publication""", json_schema_extra = { "linkml_meta": {'alias': 'abstract', 'domain_of': ['Publication']} }) + combined_text: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'combined_text', 'domain_of': ['Publication']} }) + full_text: Optional[str] = Field(None, description="""The full text of the publication""", json_schema_extra = { "linkml_meta": {'alias': 'full_text', 'domain_of': ['Publication']} }) + + +class AnnotatorResult(ConfiguredBaseModel): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/core'}) + + subject_text: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'subject_text', 'domain_of': ['AnnotatorResult']} }) + object_id: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'object_id', 'domain_of': ['AnnotatorResult']} }) + object_text: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'object_text', 'domain_of': ['AnnotatorResult']} }) + + +class Ontology(NamedEntity): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/miro', 'tree_root': True}) + + name: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['Ontology', 'Owner', 'CitedOntology']} }) + owners: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'owners', 'domain_of': ['Ontology']} }) + license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', 'domain_of': ['Ontology']} }) + url: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'url', 'domain_of': ['Ontology']} }) + repository: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'repository', 'domain_of': ['Ontology']} }) + methodological_framework: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'methodological_framework', 'domain_of': ['Ontology']} }) + need: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'need', 'domain_of': ['Ontology']} }) + competition: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'competition', 'domain_of': ['Ontology']} }) + target_audience: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'target_audience', 'domain_of': ['Ontology']} }) + scope_and_coverage: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'scope_and_coverage', 'domain_of': ['Ontology']} }) + development_community: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'development_community', 'domain_of': ['Ontology']} }) + communication: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'communication', 'domain_of': ['Ontology']} }) + knowledge_acquisition_method: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'knowledge_acquisition_method', 'domain_of': ['Ontology']} }) + source_knowledge_location: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'source_knowledge_location', 'domain_of': ['Ontology']} }) + content_selection: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'content_selection', 'domain_of': ['Ontology']} }) + knowledge_representation_language: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'knowledge_representation_language', 'domain_of': ['Ontology']} }) + development_environment: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'development_environment', 'domain_of': ['Ontology']} }) + ontology_metrics: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'ontology_metrics', 'domain_of': ['Ontology']} }) + incorporation_of_ontologies: Optional[List[str]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'incorporation_of_ontologies', 'domain_of': ['Ontology']} }) + entity_naming_convention: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'entity_naming_convention', 'domain_of': ['Ontology']} }) + identifier_generation_policy: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'identifier_generation_policy', 'domain_of': ['Ontology']} }) + entity_metadata_policy: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'entity_metadata_policy', 'domain_of': ['Ontology']} }) + upper_ontology: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'upper_ontology', 'domain_of': ['Ontology']} }) + ontology_relationships: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'ontology_relationships', 'domain_of': ['Ontology']} }) + axiom_patterns: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'axiom_patterns', 'domain_of': ['Ontology']} }) + dereferencable_iri: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'dereferencable_iri', 'domain_of': ['Ontology']} }) + sustainability_plan: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'sustainability_plan', 'domain_of': ['Ontology']} }) + deprecation_strategy: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'deprecation_strategy', 'domain_of': ['Ontology']} }) + versioning_policy: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'versioning_policy', 'domain_of': ['Ontology']} }) + testing: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'testing', 'domain_of': ['Ontology']} }) + evaluation: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'evaluation', 'domain_of': ['Ontology']} }) + examples_of_use: Optional[List[UseExample]] = Field(default_factory=list, json_schema_extra = { "linkml_meta": {'alias': 'examples_of_use', 'domain_of': ['Ontology']} }) + institutional_endorsement: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'institutional_endorsement', 'domain_of': ['Ontology']} }) + evidence_of_use: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'evidence_of_use', 'domain_of': ['Ontology']} }) + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + + +class Owner(NamedEntity): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'owl': {'tag': 'owl', 'value': 'IntersectionOf'}}, + 'from_schema': 'http://w3id.org/ontogpt/miro'}) + + name: Optional[str] = Field(None, description="""The name of a person, group of people, organization, or consortium that manages development of the ontology.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['Ontology', 'Owner', 'CitedOntology']} }) + affiliation: Optional[str] = Field(None, description="""The name of the organization with which the owner is affiliated.""", json_schema_extra = { "linkml_meta": {'alias': 'affiliation', 'domain_of': ['Owner']} }) + contact: Optional[str] = Field(None, description="""The contact details of the owner. This is typically an email address.""", json_schema_extra = { "linkml_meta": {'alias': 'contact', 'domain_of': ['Owner']} }) + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + + +class CitedOntology(NamedEntity): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/miro'}) + + name: Optional[str] = Field(None, description="""The name of the ontology being cited.""", json_schema_extra = { "linkml_meta": {'alias': 'name', 'domain_of': ['Ontology', 'Owner', 'CitedOntology']} }) + version: Optional[str] = Field(None, description="""The version of the ontology being cited.""", json_schema_extra = { "linkml_meta": {'alias': 'version', 'domain_of': ['CitedOntology']} }) + citation: Optional[str] = Field(None, description="""The citation for the ontology being cited.""", json_schema_extra = { "linkml_meta": {'alias': 'citation', 'domain_of': ['CitedOntology']} }) + integration: Optional[str] = Field(None, description="""A description of how the ontology being cited is integrated into the ontology being reported.""", json_schema_extra = { "linkml_meta": {'alias': 'integration', 'domain_of': ['CitedOntology']} }) + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + + +class UseExample(ConfiguredBaseModel): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/miro'}) + + example_description: Optional[str] = Field(None, description="""A description of the ontology in use in its application setting or use case.""", json_schema_extra = { "linkml_meta": {'alias': 'example_description', 'domain_of': ['UseExample']} }) + + +# Model rebuild +# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model +ExtractionResult.model_rebuild() +NamedEntity.model_rebuild() +CompoundExpression.model_rebuild() +Triple.model_rebuild() +TextWithTriples.model_rebuild() +TextWithEntity.model_rebuild() +RelationshipType.model_rebuild() +Publication.model_rebuild() +AnnotatorResult.model_rebuild() +Ontology.model_rebuild() +Owner.model_rebuild() +CitedOntology.model_rebuild() +UseExample.model_rebuild() + diff --git a/src/ontogpt/templates/miro.yaml b/src/ontogpt/templates/miro.yaml new file mode 100644 index 000000000..37c3bc95e --- /dev/null +++ b/src/ontogpt/templates/miro.yaml @@ -0,0 +1,307 @@ +id: http://w3id.org/ontogpt/miro +name: miro +title: MIRO Extraction Template +description: >- + A template for extracting the minimal information for reporting + an ontology, as per the MIRO guidelines. + See doi:10.1186/s13326-017-0172-7 + The target for this template should be a report or publication + describing a single ontology. +license: https://creativecommons.org/publicdomain/zero/1.0/ +prefixes: + rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# + onto_usage: http://w3id.org/ontogpt/onto_usage + linkml: https://w3id.org/linkml/ + +default_prefix: miro +default_range: string + +imports: + - linkml:types + - core + +classes: + Ontology: + tree_root: true + is_a: NamedEntity + attributes: + name: + annotations: + prompt: >- + The full name of the ontology, including the acronym and the + version number referred to in the report. + range: string + owners: + annotations: + prompt: >- + A semicolon delimited list of the names, affiliations (where + appropriate) and contact details of the person, people or + consortium that manage the development of the ontology. + range: Owner + multivalued: true + license: + annotations: + prompt: >- + The licence which governs the permissions surrounding the ontology. + range: string + url: + annotations: + prompt: >- + The web location where the ontology file is available. + range: string + repository: + annotations: + prompt: >- + The web location (URL) of the version control system where current + and previous versions of the ontology can be found. + range: string + methodological_framework: + annotations: + prompt: >- + A name or description of the steps taken to develop the ontology. + This should describe the overall organisation of the ontology + development process. + range: string + need: + annotations: + prompt: >- + Justification of why the ontology is required. + range: string + competition: + annotations: + prompt: >- + A semicolon delimited list of the names and citations for other + ontology or ontologies in the same general area as the one being + reported upon, together with a description on why the one being + reported is needed instead or in addition to the others. + Include the version of the ontology being cited. + range: CitedOntology + multivalued: true + target_audience: + annotations: + prompt: >- + The community or organisation performing some task or use for which + the ontology was developed. + range: string + scope_and_coverage: + annotations: + prompt: >- + The domain or field of interest for the ontology and the boundaries, + granularity of representation and coverage of the ontology. State + the requirements of the ontology, such as the competency questions + it should satisfy. A visualisation or tabular representation is + optional, but often helpful to illustrate the scope. + range: string + development_community: + annotations: + prompt: >- + The person, group of people or organisation that actually creates + the content of the ontology. This is distinct from the Ontology + Owner that is concerned with the management of the + ontology's development. + range: string + communication: + annotations: + prompt: >- + Location, usually URL, of the email list and/or the issue tracking + systems used for development and managing feature requests for the + ontology. + range: string + knowledge_acquisition_method: + annotations: + prompt: >- + How the knowledge in the ontology was gathered, sorted, verified, + etc. + range: string + source_knowledge_location: + annotations: + prompt: >- + The location of the source whence the knowledge was gathered. + range: string + content_selection: + annotations: + prompt: >- + The prioritisation of entities to be represented in the ontology + and how that prioritisation was achieved. Some knowledge is more + important or of greater priority to be in the ontology to support + the requirements of that ontology. + range: string + knowledge_representation_language: + annotations: + prompt: >- + The knowledge representation language used and why it was used. For + a language like OWL, indicate the OWL profile and expressivity. + range: string + development_environment: + annotations: + prompt: >- + The tool(s) used in developing the ontology. + range: string + ontology_metrics: + # This could be modeled as multivalued but for simplicity it is not. + annotations: + prompt: >- + List of the numbers of classes, properties, + axioms and types of axioms, rules and individuals in the ontology. + range: string + incorporation_of_ontologies: + annotations: + prompt: >- + A semicolon delimited list of the names, versions and citations of + external ontologies imported into the ontology and where they are + placed in the host ontology. + range: CitedOntology + multivalued: true + entity_naming_convention: + annotations: + prompt: >- + The naming scheme for the entities in the ontology, capturing + orthography, organisation rules, acronyms, and so on. + range: string + identifier_generation_policy: + annotations: + prompt: >- + The scheme used for creating identifiers for entities in the + ontology. State whether identifiers are semantic-free or meaningful. + range: string + entity_metadata_policy: + annotations: + prompt: >- + What metadata for each entity is to be present. This could include, + but not be limited to: A natural language definition, editor, edit + history, examples, entity label and synonyms, etc. + range: string + upper_ontology: + annotations: + prompt: >- + If an upper ontology is used, which one is used and why is it used? + If not used, then why not? + range: string + ontology_relationships: + annotations: + prompt: >- + The relationships or properties used in the ontology, which were + used and why? Were new relationships required? Why? + range: string + axiom_patterns: + annotations: + prompt: >- + An axiom pattern is a regular design of axioms or a template for + axioms used to represent a category of entities or common aspects + of a variety of types of entities. An axiom pattern may comprise + both asserted and inferred axioms. The aim of a pattern is to + achieve a consistent style of representation. An important family + of axiom patterns are Ontology Design pattern (ODP) which are + commonly used solutions for issues in representation. + range: string + dereferencable_iri: + annotations: + prompt: >- + State whether or not the IRI used are dereferenceable to a Web + resource. Provide any standard prefix (CURIE). + range: string + sustainability_plan: + annotations: + prompt: >- + State whether the ontology will be actively maintained and + developed. Describe a plan for how the ontology will be kept up to + date. + range: string + deprecation_strategy: + annotations: + prompt: >- + Describe the procedures for managing entities that become removed, + split or redefined. + range: string + versioning_policy: + annotations: + prompt: >- + State or make reference to the policy that governs when new versions + of the ontology are created and released. + range: string + testing: + annotations: + prompt: >- + Description of the procedure used to judge whether the ontology + achieves the claims made for the ontology. State, for example, + whether the ontology is logically consistent, answers the queries + it claims to answer, and whether it can answer them in a time that + is reasonable for the projected use case scenario (benchmarking). + range: string + evaluation: + annotations: + prompt: >- + A determination of whether the ontology is of value and + significance. An evaluation should show that the motivation is + justified and that the objectives of the ontology’s development are + met effectively and satisfactorily. Describe whether or not the + ontology meets its stated requirements, competency questions and + goals. + range: string + examples_of_use: + annotations: + prompt: >- + A semicolon delimited list of illustrations of the ontology in use + in its application setting or use case. + range: UseExample + multivalued: true + institutional_endorsement: + annotations: + prompt: >- + State whether the ontology is endorsed by the W3C, the OBO foundry + or some organisation representing a community. + range: string + evidence_of_use: + annotations: + prompt: >- + An illustration of active projects and applications that use the + ontology. + range: string + + Owner: + is_a: NamedEntity + annotations: + owl: IntersectionOf + attributes: + name: + description: >- + The name of a person, group of people, organization, or consortium + that manages development of the ontology. + range: string + affiliation: + description: >- + The name of the organization with which the owner is affiliated. + range: string + contact: + description: >- + The contact details of the owner. This is typically an email address. + range: string + + CitedOntology: + is_a: NamedEntity + attributes: + name: + description: >- + The name of the ontology being cited. + range: string + version: + description: >- + The version of the ontology being cited. + range: string + citation: + description: >- + The citation for the ontology being cited. + range: string + integration: + description: >- + A description of how the ontology being cited is integrated into the + ontology being reported. + range: string + + UseExample: + attributes: + example_description: + description: >- + A description of the ontology in use in its application setting or + use case. + range: string