-
Notifications
You must be signed in to change notification settings - Fork 0
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
Figure out what to do about the top-level object in a Phyx file #78
Comments
I'm not sure I understand the repercussions in full. However, taking a step back, if this is an exchange standard then "anything goes" in places that are keys and types is usually a bad idea and inviting trouble down the road. So it seems to me we should give guidance (and requirements) on type and suggested (i.e., optional) keys even for the top-level object. |
Also, I think ultimately we want to work towards obsoleting the testcase.owl ontology. If there are properties only needed or working with Phyx (JSON-LD) files, then I don't know why those would have to be in any ontology. Isn't a nice thing about JSON-LD that not every key has be linked to semantics in an ontology? |
In thinking about this a bit more, I've realized that the top-level object does exist in the generated OWL/JSON-LD file -- it's the OWL ontology itself! So, we can make it explicit in the Phyx standard that the top-level object should have a
I agree! We don't actually use any Testcase terms for reasoning any more, so I've created a PR that removes this ontology from the imports (PR #81).
Yes, definitely! What concerns me is that these keys still need to be RDF properties, otherwise their values will be ignored when the OWL ontology is generated. I've replaced some of these made-up terms with CDAO terms in PR #81. We still use the following made-up RDF properties, all of which are currently in the
I think we should move these out of the |
Consensus:
|
I've figured out a possible solution for If that's not a good way to implement these terms, we should reopen the discussion we previously had about them at phyloref/phyloref-ontology#15 ( I'll open a new issue for |
This PR replaces `testcase:has_phyloreference` and `testcase:has_phylogeny` with a reversed [`rdfs:isDefinedBy`](https://www.w3.org/TR/rdf-schema/#ch_isdefinedby), i.e. so each phyloreference and phylogeny is described as being defined by the generated ontology (which may be a blank node if no `@id` is set). This fulfills our need for a way of linking these properties together (see #78) without creating a new term to do so.
While we need this in JSON, we probably don't need to include this in RDF (see #78). If we do need to insert it, we can add it back pretty easily.
Took a while, but I've finally filed that I've taken out |
Hilmar and I discussed this this morning, and it looks like there are two possibilities for
The rule we should use is that it's okay to let hacks slip into the way that phyx.js works, but not to let that slip into the OWL representation. |
This PR removes some RDF properties from the JSON Schema: - While we need `internalSpecifiers` and `externalSpecifiers` properties in JSON, we probably don't need to include them in RDF (see #78, phyloref/phyloref-ontology#7, phyloref/phyloref-ontology#8). If we change our mind later, we can add them back pretty easily. - We previously used the RDF version of the `malformedPhyloreference` field to let JPhyloRef know when a particular phyloreference was malformed (such as when it had no internal specifiers, or if one of its specifiers could not be mapped to a particular phylogeny node). JPhyloRef no longer checks this field at all, so we might as well remove it from here as well. - I've rewritten the component class system so that the two types of component classes are handled separately: - Direct subclasses are now linked to the phyloreference via the `subClasses` field (which is the `@reverse` of `rdfs:subClassOf`). - Cache component classes are now inserted directly into the logical expression when first used, and then subsequently referenced in other logical expressions as needed. - Component classes were previously stored and identified on a global basis (i.e. if `#phyloref1` had 4 component classes, the first component class for `#phyloref2` would be identified as `#phyloref2_component5`). I've changed this so that each phyloreference's component classes start counting from 1.
A Phyx file is a JSON-LD file with a top-level object that includes both phylogenies and phyloreferences. This top-level object isn't intended to be used as an RDF object -- we use some dummy RDF properties (
http://vocab.phyloref.org/phyloref/testcase.owl#has_phyloreference
,http://vocab.phyloref.org/phyloref/testcase.owl#has_phylogeny
andhttp://vocab.phyloref.org/phyloref/testcase.owl#has_node
) to link this object to each phyloreference, phylogeny and node. These are only needed for working with the JSON-LD file -- when reading a JSON-LD file as RDF, entities not connected to the root object via RDF properties are ignored. None of them are used in reasoning.For the purposes of metadata, we do allow the top-level object to have a
doi
or acitation
, indicating the DOI of this Phyx file or a citation to its publication (which are included in the RDF output), as well as adefaultNomenclaturalCodeIRI
for the default nomenclatural code to use across all phylogenies and phyloreferences (which is not included in the RDF output). This top-level object can be of any type with any@id
-- the Phyx format doesn't specify what it needs to be. Once we fix the bug in PR #77, users will be able to identify this object in any way they like -- and, if no@id
is provided, they will be included in the RDF output as an untyped blank node.If this set-up is fine -- with dummy RDF properties and no recommended
@id
or@type
-- then nothing more needs to be done, and we can close this issue. @hlapp What do you think?The text was updated successfully, but these errors were encountered: