Inverse Properties

Can you please clarify if inverse properties module works with item sets?
I have managed to have everything right with items but it seems that for items sets the module is not working. Is this on purpose?

This is definitely not on purpose. It’s an oversight, and I thank you for reporting it. A new release that enables inverse properties for item sets should be published tomorrow morning.

1 Like

Thank you for you prompt reply and actions. Much appreaciated :slight_smile:

Hello again. I have installed the new version 1.0.1 but the problem persists. inverse properties works perfect between items but do not work between item-sets or item to item-sets and vice versa. Unless I am doing something completely wrong… (I am following the exact same process as with items. I am setting dcterms:IsPartOf to be the inverse of dcterms:HasPart to a template_resource used by item-sets. After posting (or updating) nothing happens (and no Logs as well).

I think, technically, is more complicated than attaching the event listener for post/update on item-sets and media… Haven’t dig enough to omeka though to give more details on this…

Thank you in advance

That’s strange. This is working for me:

I have a resource template that includes dcterms:hasPart. In the “Inverse Properties” interface, I select the template and set dcterms:isPartOf to be the inverse of dcterms:hasPart. Then I add an item set, select the template, and set an item resource in the dcterms:hasPart value. When I add the item set, the item correctly includes a dcterms:isPartOf value that links back to the item set.

Is this a similar workflow to what you’ve been doing?

It is possible that there’s some interaction with another module that’s breaking the automatic linkage. You could deactivate all other modules and try again.

Hello, thank you for your reply. I confirm that what you are describing works now. BUT try to add a new item-set and set an item-set (not a item). This does not work.
item - item : works
item set - item: works (after your update)
item set - item set: does not work

Can you please confirm?
Thanks a lot

Item set - item set works for me. Did you disable all modules but Inverse Properties? That would rule out a breaking interaction with another module.

To be honest I haven’t disable any modules and I am using Advanced Resource Template 3.4.26 which seems the most “suspicious”. Let me check this first thing in the morning and get back to you. If it works for you then probably is something conflicting in my side. Thank you once again for your prompt replies. I keep you informed.

OK, after a lot of tests, I believe I 've found what the problem is.
First of all, everything works as expected at all cases (item/item, item/item-set, item-set/item-set) if the “targeted” item (or item-set) includes any property BESIDES the targeted one.

For example, let’s set dcterms:isPartOf to be the inverse of dcterms:hasPart.

You edit or create an item-set A and on hasPart field you select an item-set B.

  • If B contains let’s say just a title and description, then correctly, item-set B now (besides title and description) it also contains isPartOf : A. So, all’s good.

  • if B though, has already a property isPartOf (with an item or item-set already populated “by hand”, or even, populated by the “inverse properties” module), then isPartOf does not include A in the list as it should have.

I hope I have explained it clearly.

Again, let me remind you that I am using the module “Advance Resource Template” which at this time I don’t feel confident to disable/remove.

Can you please check if you can reproduce the above behaviour?
I appreciate your effort.

I can reproduce the behavior. Good catch. I’ve pushed a branch that fixes the issue, but want to spend a little more time testing it before I make another release. In the meantime, feel free to make the change to your own code and test for yourself.

Wow!! you should change your name to Flash Gordon :slight_smile:

I confirm that it is functioning perfectly fine now.
Excellent work. Thanks a lot.

OK, since we already have this thread active, let me just propose an idea. When an already “linked” property is removed (I don’t mean when an item is deleted, just the specific property) it should be removed also from any other connected item / item-set. I understand that technically this is complicated and would demand to parse all items / items-sets so I am not sure if it’s a good idea after all… maybe an option in the module’s settings to be switched on/off depending on the case… What’s your thought on this?


An interesting idea. I’ve created an issue to the effect. As you see, a solution is far from optimal, but I’ll consider our options.