{% extends "base.html" %} {% block content %} {% set box = "border:1px solid var(--border, #ddd); border-radius:6px; padding:0.9rem 1rem; margin:1rem 0;" %}
Two steps: configure a SEEK instance's data model from this profile (Controlled Vocabularies + Sample Types), then sync the loaded dataset into it — both over SEEK's API using the URL + key set on the Plugins page.
{% if action_error %}Pick the model (profile) to export, then Provision to create its Controlled Vocabularies (from closed value lists) + Sample Types (from sample-bearing entities) in SEEK over the API. Idempotent — re-running reuses what already exists. To then sync a dataset, provision the profile it was built on (loaded now: {{ profile }}).
Then, as a SEEK admin: Server administration → Extended Metadata Types → create from FAIR Data Station TTL → upload the file.
Pushes profile {{ profile }} · dataset {{ dataset_name or "(unsaved)" }} — {% for etype, n in entity_counts %}{{ etype }} ×{{ n }}{% if not loop.last %}, {% endif %}{% endfor %} — as Investigations/Studies/Assays and Samples (into the provisioned Sample Types).
{% else %}No exportable dataset loaded — build or load one first.
{% endif %}Download FAIR Data Station RDF and import it via SEEK's own Import from FAIR Data Station (handles the full ISA + Extended Metadata).
{% if exportable_count %} Download SEEK ISA RDF (.ttl) → {% else %} {% endif %} {% if seek_url %} · your instance: {% if seek_url.startswith(("http://", "https://")) %}{{ seek_url }}{% else %}{{ seek_url }}{% endif %}
{% endif %}
Note: SEEK reads ISA levels positionally, so with the ISA profile (no ObservationUnit level) entities below Study import one level high; Investigation and Study round-trip cleanly.