Skip to content

Join specification when logical source is the same #74

Closed
@bjdmeest

Description

@bjdmeest

Let's say we have two triple maps that refer to the same logical source (and with same, we really mean same URI, not "same because the descriptions lead to the semantically same logical source").

Sample source (CSV)

id,parent_id
1,2
2,1

Base mapping (YARRRML)

prefixes
  ex: http://example.com#
sources:
  test: [data.csv]
mappings:
  test1:
    s: ex:$(id)
    po:
      p: ex:parent
      o:
        mapping: test2
  test2:
    s: ex:$(parent_id)

We have following use cases that are underspecified in de spec

the spec currently says If the logical source of the child triples map and the logical source of the parent triples map of a referencing object map are not identical, then the referencing object map must have at least one join condition.

  1. If a join condition is specified AND the logical source is not the same: common case, execute join condition between each iteration pair
  2. If a join condition is specified AND the logical source is the same: same as above
  3. If no join condition is specified AND the logical source is not the same: do a full join (i.e., take all iterations into account)
  • example output: ex:1 ex:parent ex:2, ex:1 ex:parent ex:1, ex:2 ex:parent ex:2, ex:2 ex:parent ex:1
  1. If no join condition is specified AND the logical source is the same: don't do a full join, but take the current iteration into account
  • example output: ex:1 ex:parent ex:2, ex:2 ex:parent ex:1
  • this last one is the edge case, but allows to 'join per iteration'. Question is: should we make this edge case explicit, or should there be a different way to tackle this edge case?

Metadata

Metadata

Assignees

Labels

RML-joinissues relate to joins of RMLproposalissue has a proposal to be solved

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions