You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ROBOT template has served us well, but I would like a more general solution that fits in with VALVE. Key features:
be more careful about quoting and escaping
we've gotten ourselves all tangled up in OBI lately, because I wasn't careful enough in the beginning
Excel is important and it's a big pain
get away from the second-row template strings, in favour of a 'field' table with 'table', 'column', and 'template' columns
this gives up something people like about ROBOT template, but I think the benefits will great
this will allow more information to be associated with a template sheet, such as VALVE validation, documentation, data types, and stuff for generating HTML forms
this will allow one 'field' table to specify templates for multiple template sheets, such as all OBI templates
multi-column templates
ROBOT template is limited to substitutions from the current column
DOS-DP allows multiple columns, but all columns are required (I think), and they don't use column names in the template string
I would like optional columns and to use column names
Here's an example 'field' table:
table
column
condition
template
assay
ID
{ID} rdt:type owl:Class
assay
logical type
any("subClassOf", "equivalentTo")
assay
output
{ID} {logical type} has_specified_output some {output}
assay
target entity
{ID} subClassOf has_specified_output some ('is about' some {target entity})
I think that the template strings should be optional: If there's no value for a row in the 'output' column, don't fill this template for this row.
The next level of complexity is that if both 'output' and 'target entity' are defined, then we actually want a combined axiom: {ID} subClassOf has_specified_output some ({output} and ('is about' some {target entity})).
One solution is a Jinja-style templates with conditionals:
{ID} subClassOf has_specified_output some
{% if output and 'target entity' %}
({output} and ('is about' some {target entity}))
{% elif output %}
{output}
{% elif 'target entity' %}
('is about' some {target entity})
{% endif %}
Another option is to provide a list of cases, try them all, and use the first one for which all required variables are defined. Maybe this could be more concise than the Jinja-style, but less familiar and probably less explicit?
{ID} subClassOf has_specified_output some
ANY
- ({output} and ('is about' some {target entity}))
- {output}
- ('is about' some {target entity})
The text was updated successfully, but these errors were encountered:
ROBOT template has served us well, but I would like a more general solution that fits in with VALVE. Key features:
Here's an example 'field' table:
I think that the template strings should be optional: If there's no value for a row in the 'output' column, don't fill this template for this row.
The next level of complexity is that if both 'output' and 'target entity' are defined, then we actually want a combined axiom:
{ID} subClassOf has_specified_output some ({output} and ('is about' some {target entity}))
.One solution is a Jinja-style templates with conditionals:
Another option is to provide a list of cases, try them all, and use the first one for which all required variables are defined. Maybe this could be more concise than the Jinja-style, but less familiar and probably less explicit?
The text was updated successfully, but these errors were encountered: