Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gist does not meet OWL DL spec; import SKOS? #808

Closed
dylan-sa opened this issue Mar 28, 2023 · 7 comments
Closed

gist does not meet OWL DL spec; import SKOS? #808

dylan-sa opened this issue Mar 28, 2023 · 7 comments
Labels
type: feature request Request for new functionality

Comments

@dylan-sa
Copy link
Contributor

Recently we had some internal discussion at SA about which OWL profiles gist is consistent with. Robot's validate-profile tool reveals that gist would meet the OWL DL spec but for the fact that it uses annotation properties like skos:definition and skos:prefLabel that are currently "undeclared" in the ontology. (gist also does not meet RL, but that is because the "distinctionary" pattern that we employ for many formal definitions is not expressible in RL.)

To meet the DL spec, one option is to import the SKOS ontology; then properties like skos:definition would be declared in gist. There has been some discussion of importing SKOS in the past--e.g., in #373. What do folks think of this option?

@dylan-sa dylan-sa added the type: feature request Request for new functionality label Mar 28, 2023
@rjyounes
Copy link
Collaborator

rjyounes commented Mar 28, 2023

The issue you cite is not terribly relevant here; I recall another issue related to importing SKOS that that we decided not to act on, but I can't find it nor remember the counter-argument. I don't think there's a choice here: if we want gist to be DL-compliant we need to import SKOS.

@uscholdm
Copy link
Contributor

I often import skos into my enterprise ontologies to stop PRotege from adding them.

Is there a real practical advantage of staying in DL, if the only departure is two undefined annotations? I can't imagine it matters.

@uscholdm
Copy link
Contributor

gist also does not meet RL, but that is because the "distinctionary" pattern that we employ for many formal definitions is not expressible in RL

Is the workaround here to just use subclass instead of equivalent class?

@rjyounes
Copy link
Collaborator

rjyounes commented Mar 28, 2023

Let's not bring RL into the discussion now. There are several ways in which gist goes beyond the RL profile. We are working on this for a client, and we have an open issue for gist to make the subclass assertions in a separate file. So let's limit this issue to DL.

@dylan-sa
Copy link
Contributor Author

Is there a real practical advantage of staying in DL, if the only departure is two undefined annotations? I can't imagine it matters.

This is a good question. Arguably this particular deviation from DL doesn't matter much in itself b/c it's not like there are inferences we're expecting but not getting. At the moment, there are just a handful of properties we use in the SKOS and SHACL namespaces that cause the issue. However, if we would generally like to maintain gist in DL (for the purpose of being able to confidently rely on DL reasoners), there is value in weeding out these undeclared property reference errors so that we can more easily catch more impactful deviations from DL in the future (as unlikely as they might be).

@rjyounes
Copy link
Collaborator

Oh, it's SHACL as well. While I wouldn't be much opposed to import SKOS, I hate the idea of importing all of SHACL into gist just to use sh:declare and sh:PrefixDeclaration. (Too bad you can't, as in programming, import only portions).

It also seems that other reasoners we typically use are not balking at the lack of import, since we don't see these errors when running reasoning in Protege. @dylan-sa Does robot validate-profile by any chance have an option that would silence these errors?

I change my vote to not importing.

@rjyounes
Copy link
Collaborator

rjyounes commented May 5, 2023

It turns out importing SKOS, as opposed to adding the declarations as Protege does, will not solve the problem, because SKOS itself uses dcterms predicates without importing dcterms. Interestingly, it doesn't help if gist imports dcterms - it has to be imported by SKOS. And we don't want to get into that downward spiral.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: feature request Request for new functionality
Projects
None yet
Development

No branches or pull requests

3 participants