This happens because
frameId is not known to be a unique field.
frameId is the field that's used to create the IRI for
?image, which in turn is the variable we're joining on in the query.
frameId is not a unique field in the
aus collection, then Stardog needs this join to create the cross product of
seqId fields per
If this is not what's intended, you have a couple options, depending on your data, what it means, and how you wish to model it.
If the combination of the
frameId fields represent some concept (an image element, say) you could change your model such that each
aus document represents an "ImageFrame" with an IRI who's template includes both the
frameId fields. See this blog post for a detailed explanation: https://www.stardog.com/blog/mapping-denormalized-data/
If there is a 1 to 1 relationship between frames and documents (between the
frameId field and the
_id field), then you have a couple choices.
- You could use the
_id field in place of the
frameId field in the
- You could indicate to Stardog that
frameId is a unique field in
aus collection using the
unique.key.sets virtual graph property.
In this example, the property would be set to:
See https://www.stardog.com/docs/#_setting_unique_keys_manually for details.