Skip to main content

Invalid exported manifest (v2+v3)

I made some annotations on

https://www.goudatijdmachine.nl/omeka/iiif/2/13/manifest but when I export these as manifest they seem to be invalid. The v2 version

https://www.goudatijdmachine.nl/omeka/files/iiif/manifest_liiive_v2.json doesn’t show the image (in theseusviewer.org) and no annotations. The v3 version

https://www.goudatijdmachine.nl/omeka/files/iiif/manifest_liiive_v3.json doens’t show the image but does show the presence of annotations (with invalid annotation target).

Status: In Progress8 comments

Log in to comment and vote

Comments8

  • Alice Tweedy McGrath

    •

    Jan 10, 2025

    My issue is similar. I have tried using the exported manifests as v2 and v3 but both times I get a ‘failed to fetch’ error (also using Theseus)

    I was ultimately able to get results using Workbench when I published the annotations as a separate list and added a reference to that list (manifest:

    https://atmcgrath.github.io/melon/manifests/angel-0-l.json annotation list:

    https://atmcgrath.github.io/melon/annotations/angel-annotations.json

    ). Two annotations load, but one has an “invalid target”. This is ok as a workaround, but if the exported manifests with annotations worked that would be much easier! Do you have documentation for how to make that work? Thanks!

    • Rainer Simon

      Team•

      Jan 11, 2025

      Hi Alice,

      I looked into the problem. There are two separate issues: first, the “failed to fetch” one.

      That, actually, is not a problem with the manifests. It’s a problem with how you are serving them. There’s a built-in security mechanism in every browser that blocks applications served on one domain (e.g. theseusviewer.org) to access content from other domains (e.g. alicemcgrath.digital…). To make this work, you’d have to enable a specific server configuration (called CORS) on alicemcgrath.digital.brynmawr.edu. Without it, every viewer (Glycerine, Theseus, Mirador, liiive,…) will fail to fetch the manifest.

      The reason you can load from atmcgrath.github.io has, in fact, nothing to do with separating the annotations. It’s simply because Github does have the CORS setting enabled by default. Therefore, the simplest solution would be to move your manifest to Github directly, and they should load just fine.

      • Rainer Simon

        Team•

        Jan 11, 2025

        The second issue, I’m not sure about. But I think what you have done is to split the manifest into a v2 Presentation manifest and a v3 annotation list, which might not work in combination. But I can’t reproduce your “invalid target” error directly. Which viewer did you see that in?

        • Rainer Simon

          Team•

          Jan 11, 2025

          A quick update to the second issue: there was a bug on my end which produced broken targets for ellipse annotations. That’s now fixed!

          If you re-export the manifest from liiive, and put it on Github, it should now work in other viewers.

          • Alice Tweedy McGrath

            •

            Jan 14, 2025

            Hi, Simon, thanks for pointing that out! I don’t think the CORS thing is the whole issue, however — I actually had previously tried on github and the exports still weren’t working. take a look at these two, which I just exported today:
            - https://atmcgrath.github.io/melon/manifests/liiive-v2.json

            V3 works fine in theseus (but not mirador), v2 doesn’t load the image or annotations in either.

            • Rainer Simon

              Team•

              Jan 15, 2025

              Hi Alice,

              thanks for the additional troubleshooting - and sorry for the hassle!

              It looks like there are several smaller issues, working together unfavorably… I’m on it.

              Some seem to stem from liiive’s built in v2-to-v3 manifest conversion. I’m using an official utility from IIIF commons for the conversion, which still seems to have a few issues. I’m already in touch with the IIIF folks about identifying and sorting them out. Meanwhile, I disabled the option to download a v2 manifest from liiive, for as long as those issues aren’t sorted out.

              Another, unrelated issue, seems to be that Mirador has a few gaps when it comes to annotations support. First, I noticed that annotations won’t appear if the don’t have a motivation field set. I added a motivation: “commenting“ now to liiive exports. That makes them appear in the Mirador annotation list.

              Additionally, however, it looks like Mirador is only able to display rectangle shapes. But not polygons or ellipses. I found this issue on their Github which, alas, has not been responded to. Again, I’m going to get in touch with them and see whether there’s something they can do.

              For the time being, I’ll focus on getting things to work well in Theseus and Glycerine, both of which seem to display all annotation shapes just fine.

              Last but not least: because of the problems with the v2/v3 conversion utility, manifest that are originally imported into liiive as v2 manifests may have issues as well. Again – I’m working on it! But for now, the only truly safe way to get annotations from liiive display fine in other viewers is to:

              • Import a v3 manifest

              • Annotate in liiive

              • Export a v3 manifest

              This way, you’re never passing the brittle v2/v3 conversion path.

  • Rainer Simon

    Team•

    Dec 23, 2024

    Hm, sorry for that. I’ll investigate what the problem is. The manifest is actually serialized with one of the default IIIF implementations. But something seems to be off with the polygon annotations on my end. I’ll report back soon!

    • Rainer Simon

      Team•

      Dec 23, 2024

      Hi @Bob Coret,

      I just pushed an update to liiive, which fixes bug in my serialization of SVG targets. Exporting a v3 Presentation Manifest should now work. (That’s regardless of whether you imported a v2 or v3 manifest.)

      Exporting a v2 manifest may still need a bit of troubleshooting. Internally, everything gets converted to v3 first, and the “downgrade” back from v3 to v2 isn’t quite working yet, I think. But I’m on it!