German-BioImaging / omero-rdf

A plugin for exporting RDF from OMERO
GNU General Public License v2.0
4 stars 5 forks source link

Exception caused by malformed triple in idr_annotations. #1

Closed CFGrote closed 8 months ago

CFGrote commented 8 months ago

Running

omero rdf Dataset:3525

on our local omero instance caused

...
<https://ome.evolbio.mpg.de/Image/6752790>          <http://www.openmicroscopy.org/rdf/2016-06/ome_core/AcquisitionDate>    "1684509688000"^^<http://www.w3.org/2001/XMLSchema#integer> .
<https://ome.evolbio.mpg.de/Image/6752790>          <http://www.openmicroscopy.org/rdf/2016-06/ome_core/Name>       "awsX-01.jpg" .
<https://ome.evolbio.mpg.de/Image/6752790>          <http://www.openmicroscopy.org/TBD/omero/series>                "0"^^<http://www.w3.org/2001/XMLSchema#integer> .
# handling openmicroscopy.org/omero/client/mapAnnotation
Traceback (most recent call last):
  File "/opt/anaconda3/envs/ome/bin/omero", line 10, in <module>
    sys.exit(main())
  File "/opt/anaconda3/envs/ome/lib/python3.10/site-packages/omero/main.py", line 126, in main
    rv = omero.cli.argv()
  File "/opt/anaconda3/envs/ome/lib/python3.10/site-packages/omero/cli.py", line 1787, in argv
    cli.invoke(args[1:])
  File "/opt/anaconda3/envs/ome/lib/python3.10/site-packages/omero/cli.py", line 1225, in invoke
    stop = self.onecmd(line, previous_args)
  File "/opt/anaconda3/envs/ome/lib/python3.10/site-packages/omero/cli.py", line 1302, in onecmd
    self.execute(line, previous_args)
  File "/opt/anaconda3/envs/ome/lib/python3.10/site-packages/omero/cli.py", line 1384, in execute
    args.func(args)
  File "/home/grotec/repos/omero-rdf/src/omero_rdf/__init__.py", line 68, in _wrapper
    return func(self, *args, **kwargs)
  File "/home/grotec/repos/omero-rdf/src/omero_rdf/__init__.py", line 271, in action
    self.descend(self.gateway, args.target, batch=1)
  File "/home/grotec/repos/omero-rdf/src/omero_rdf/__init__.py", line 323, in descend
    handler(img)  # No descend
  File "/home/grotec/repos/omero-rdf/src/omero_rdf/__init__.py", line 146, in __call__
    self.handle(data)
  File "/home/grotec/repos/omero-rdf/src/omero_rdf/__init__.py", line 159, in handle
    print(f"""{s.n3():50}\t{p.n3():60}\t{o.n3()} .""")
AttributeError: 'int' object has no attribute 'n3'

I traced it back to line 67 in idr_annotations.py

yield (_id, WDP.P180, thing) 

which causes the above exception if _id is an int, as in my case when a MapAnnotation is passed down to IDRAnnotationhandler.__call__()

A fix would be to

yield(Container, WDP:180, thing)

if that is what's intended. A PR to this effect is underway.