> For the complete documentation index, see [llms.txt](https://docs.graph.build/EGeX4aTAJLlpg9Hh8kfl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.graph.build/EGeX4aTAJLlpg9Hh8kfl/graph.build-studio/modelling-multiple-semi-structured-source-files.md).

# Modelling Multiple Semi Structured Source Files

The Semi-Structured Transformer allows up to five different source data files to be used within a single model. Relationships (edges) can be created between entities (nodes) from different sources. However, to prevent the relationship from generating a Cartesian product—where every instance of node type X is linked to every instance of node type Y—a join condition is required. The join condition ensures that an edge or relationship is only created when a specified field from each source file contains matching values.

In the example below, two source files are used: one containing transaction data and another containing person and card data.

* The `Transaction` and `Location` nodes are sourced from the `new-transactions.csv` file.
* The `Person` node is sourced from the `person-card.json` file.

<figure><img src="/files/i1xvTqwOB04tOCmjwBcw" alt=""><figcaption></figcaption></figure>

An edge has been created to link the `Person` node to the `Location` node using the `madeTransactionIn` relationship. To ensure that edges are only created between people and their relevant transaction data, a join condition must be specified on the edge.

<figure><img src="/files/ui9EfDKXoGNGt9hESYRg" alt=""><figcaption></figcaption></figure>

In this case, the `if` and `equals` fields are used to select data from each source file. Both files contain credit card numbers, so edges will only be created between nodes for records where the card numbers match.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.graph.build/EGeX4aTAJLlpg9Hh8kfl/graph.build-studio/modelling-multiple-semi-structured-source-files.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
