protegeproject / webprotege

The webprotege code base
Other
622 stars 248 forks source link

Multiple definitions appear when I edit a term's definition #356

Open bobular opened 8 years ago

bobular commented 8 years ago

When I edit the definition of term in the "VBcv" ontology, visit another term, and revisit the edited term, the new definition appears alongside the old one (two definitions!). The resulting OWL/XML is invalid for use with owltools (I need to convert back to OBO) - as multiple definitions are not allowed.

I found this happened at least for the term: "Anopheles culicifacies sensu lato"

It seems there is no way to delete all the definitions and start again* - I even tried refreshing the page in my browser, and logging in again, to clear any stale client side data.

(* edit to add: and the original unedited definition is impossible to remove)

I also found the duplicate definition issue arising when I made other edits to terms (for example removing a "has_alternative_id" field), but in that case I was able to fix it by removing all definitions in the UI, refreshing the page, and a single definition returned.

It's strange that nobody else has reported this - is it an OBO-related issue?

bobular commented 8 years ago

I've tried to edit the definition offline and re-import to webprotege, with no luck.

I export the OWL/XML file and convert it to obo like this: owltools /tmp/root-ontology.owx --output -f obo vbcv-new.obo

I edit the definition line of one term, then upload this OBO file ( https://github.com/bobular/VBcv/blob/master/VBcv.obo ) to webprotege again (via the Project->Upload and merge facility).

The importer says there are no changes, and the web interface confirms this. :-(

matthewhorridge commented 8 years ago

You need to make sure that the ontology IRI and ontology version IRI (if present) are the same as the ontology in WebProtege for this to work. Is the ontology IRI preserved when you do the transformation?

bobular commented 8 years ago

Thanks @matthewhorridge !

On export to OWL/XML, the ontologyIRI is http://purl.obolibrary.org/obo/TEMP I can use owltools to convert to .obo format and then back again to .owx and the ontologyIRI is http://purl.obolibrary.org/obo/TEMP.owl which I just have to edit out the .owl and webprotege now detects a changeset :-)

Now I just need to figure out if it's a bad thing to change a bunch of Literal data types

- <Literal datatypeIRI="http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral">blah</Literal>
+ <Literal datatypeIRI="http://www.w3.org/2001/XMLSchema#string">blah</Literal>

As my owltools conversion roundtrip seems to be doing this at the moment.

matthewhorridge commented 8 years ago

Glad it's working. I'll look into the original problem.

bobular commented 8 years ago

Thanks! I suspect it may be something to do with definitions with "refs" e.g. in our OBO files:

[Term]
id: VBsp:0000001
name: Bironella
def: "A subgenus of genus Bironella." [Walter_Reed:taxonomy]

Indeed, the term VBsp:0002255 ('Anopheles culicifacies sensu lato') which I fixed offline, no longer has the Walter_Reed:taxonomy ref for the definition, and I seem to be able to edit it without problems.

I will let you know any more findings.