INCATools / INCATools/dead_simple_owl_design_patterns

Explore relationship between templates and RDF Shapes/ShEx

Open
#51 15 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
49
Forks
5
PR merge metrics
No merged PRs in 30d

Description

There are similarities and differences in semantics and use cases between templates (dosdps, robot, ottr) and shapes (shex, shacl).

We should explore these and formalize the linkages, and possibly even explore if there is a possible subsuming framework.

Some background: This is being driven in part by the [go-shapes](https://github.com/geneontology/go-shapes/blob/master/shapes/go-cam-shapes.shex) schema which is used to validate GO-CAMs but is increasingly becoming a general source of all truth about GO. Originally we had shapes only for obo-core level classes such as BiologicalProcess, CellComponent. But we are seeing the need for deeper subclasses; eg a transport subclass that we can parameterize with start-location and end-location.

This is obviously partly **duplicative** with the [dosdp templates for go](https://github.com/geneontology/go-ontology/tree/master/src/design_patterns). This is not super-satisfying. Aside from duplication of effort, the worst effect is duplication of mindshare and confusion over not having one source of truth.

A current very rough proposal:

- have a convention for annotating shex with information needed to make it on-par with dosdps. Call this t-shex
- shex is v nice for annotating any part of a shape with annotations
- we can imagine annotating the range constraint with a variable name and the shape with a generator string
- write a t-shex to dosdp (or robot template header) converter
- note the shex would be abox-based, but it would be trivial to generalize to a defining tbox expression
- OR adapt dosdp-tools to go from t-shex. This gets around a whole bunch of issues such as optional variables
- gradually migrate patterns to t-shex

E.g.

```
AND EXTRA a {
has-start-location: // dosdp:var "start"
has-end-location: // dosdp:var "end"
} // rdfs:comment "this is for transport"
dosdp:labelGen "transport [from {{start}}] [to {{end}}]"
` dosdp:textdefGen "..."
```

no need for an equiv axiom generator: all the information is in the abox pattern

You could feed this either tuples (with optional fillers) or actual subgraphs, in order to do class generation

I am also assuming in the future many tools for doing things like driving form interfaces from shex/shacl (which are partly interconvertible)

I think there are many advantages to doing this for GO. We are becoming more abox-based. A lot of the standard tooling in ShEx is really nice, and it's a widely adopted standard.

This could just be creating busy work for other uses of dosdps, e.g. they have been phenomenally successful for phenotype reconciliation.

The counterpoint to all of this is skepticism about finding the One True Framework to bind them all ([biolinkml](https://github.com/biolink/biolinkml)?)

## See Also

* discussion on semantic-web mail list about relationship between shapes and generative frameworks: https://lists.w3.org/Archives/Public/semantic-web/2019Nov/0004.html

## cc

@vanaukenk @dosumis @matentzn @balhoff @goodb @ukemi @jamesaoverton @beckyjackson

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by comparing the go-shapes schema in go-cam-shapes.shex with the dosdp templates under src/design_patterns, then review the referenced dosdp-tools approach. The issue is complete only when the relationship between shapes and templates is formalized well enough to support an agreed framework or conversion path.

Written by the indexing model from the issue text.

Assessment

Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.