scaife-viewer / backend

Packages and utilities to build Scaife Viewer backends using ATLAS / CTS resolvers
3 stars 2 forks source link

Expose ImageROI fields via GraphQL #52

Closed pletcher closed 1 year ago

pletcher commented 1 year ago

This change uses the pre-existing ImageROI model and makes it queryable over the GraphQL API. We need these data to be able to map regions of interest between text_parts and manuscript images.

@jacobwegner -- I think it's ready for review. The changes were pretty straightforward once I got the database set up. Thank you for your help with onboarding!

jacobwegner commented 1 year ago

Thanks @pletcher! I'll try and take a look at this by the end of the day tomorrow.

jacobwegner commented 1 year ago

@pletcher LGTM.

Sample GraphQL query:

{
  passageTextParts(reference: "urn:cts:greekLit:tlg0012.tlg001.msA-folios:12r.1.1-1.2") {
    edges {
      node {
        roi {
          imageIdentifier
          coordinatesValue
        }
      }
    }
  }
}

Result:

{
  "data": {
    "passageTextParts": {
      "edges": [
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.0611,0.2252,0.4675,0.0901"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.2523,0.3323,0.0248"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1642,0.2725,0.3323,0.0248"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1652,0.2905,0.3463,0.0255"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.3116,0.3273,0.0255"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.3288,0.3373,0.0255"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1642,0.3498,0.3534,0.0255"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1612,0.3701,0.3604,0.0255"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1592,0.3874,0.3664,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.4069,0.3664,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.4272,0.3283,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1622,0.4474,0.3544,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1532,0.4685,0.3874,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1622,0.4872,0.3704,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1542,0.5075,0.3924,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1612,0.524,0.3413,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1592,0.545,0.3413,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1592,0.5646,0.3644,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1602,0.5841,0.3754,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1582,0.6036,0.3864,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1622,0.6216,0.3413,0.027"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1582,0.6411,0.3514,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1612,0.6622,0.3664,0.0278"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1622,0.6802,0.3584,0.0248"
              }
            ]
          }
        },
        {
          "node": {
            "roi": [
              {
                "imageIdentifier": "https://image.library.jhu.edu/iiif/homer%2FVA%2FVA012RN-0013/",
                "coordinatesValue": "0.1632,0.6982,0.3584,0.0293"
              }
            ]
          }
        }
      ]
    }
  }
}

If we needed to query directly for the regions of interest, we'd need to add a image_rois field to the schema, similar to the image_annotations field. I think what you're adding here is fine for now.