reconciliation-api / specs

Specifications of the reconciliation API
https://reconciliation-api.github.io/specs/draft/
31 stars 9 forks source link

Restrict data extension property settings to specific properties #14

Open fsteeg opened 5 years ago

fsteeg commented 5 years ago

In the lobid-gnd reconciliation service we have an extends.property_settings item to select if a property should be added as an ID or a label. This only makes sense for non-reconciled properties, since reconciled properties already have both ID and label. Since OpenRefine always shows the configure link, we explain in our documentation that this setting only makes sense for non-reconciled properties.

To allow clients to show configuration UI only for supported properties, perhaps it would make sense to add support for restricting settings to specific properties in data extension property settings, e.g. with a target field. This could contain an array with the targeted property IDs, or some service-specific value (like non_reconciled in our example).

wetneb commented 5 years ago

Makes sense… but for services like Wikidata which have thousands of properties, it could be slightly impractical to list many of them in the manifest? I mean, we could totally add that feature and it would obviously not be a problem for the Wikidata service since the settings apply to all properties currently, but say I wanted to add a setting which would only work for "external-id" properties, it would be quite impractical to list the thousands of such properties in the manifest. So if we can think of a way that could also encompass that sort of use case, perhaps it could be slightly preferable?

Overall I am not very happy with the way property settings work in the data extension protocol, it might be worth a more thorough overhaul in future versions. When I proposed to add the data extension protocol to the reconciliation API, others from the OpenRefine team suggested we use a full-fledged query language such as GraphQL, which would get rid of this issue, but I was reluctant for the following reasons:

But of course that's a choice we can reconsider!