---
title: "Documentación"
description: "Cómo abrir, validar, buscar y citar ficheros SPDF en Rust, TypeScript, Python, Swift, Kotlin, Go, C#, PHP, Ruby, R, Julia y C."
url: https://spdf.joseluissaorin.com/es/documentacion
markdown: https://spdf.joseluissaorin.com/es/documentacion.md
lang: es
alternate_en: https://spdf.joseluissaorin.com/docs.md
updated: 2026-10-07
author: José Luis Saorín Ferrer (https://joseluissaorin.com)
license: CC-BY-4.0
---

# Documentación

> Cómo abrir, validar, buscar y citar ficheros SPDF en Rust, TypeScript, Python, Swift, Kotlin, Go, C#, PHP, Ruby, R, Julia y C.

Todas las implementaciones ofrecen las mismas operaciones con los nombres y las costumbres de su lenguaje. Elige el tuyo: cada hoja trae la línea de instalación, un primer ejemplo y el README completo de la biblioteca (en inglés, como el código).

- [Rust](https://spdf.joseluissaorin.com/es/documentacion/rust.md): `cargo add spdf`. Implementación de referencia; da además la ABI de C.
- [TypeScript](https://spdf.joseluissaorin.com/es/documentacion/js.md): `npm install spdf-format`. Node (node:sqlite), Bun y el navegador (sqlite-wasm). Es la que mueve el validador de esta web.
- [Python](https://spdf.joseluissaorin.com/es/documentacion/python.md): `pip install spdf-format`. Solo sqlite3 de la biblioteca estándar; se importa como spdf.
- [Swift](https://spdf.joseluissaorin.com/es/documentacion/swift.md): `.package(url: "https://github.com/joseluissaorin/spdf", from: "5.0.0")`. Swift Package Manager, desde el repositorio. Plataformas de Apple y Linux.
- [Kotlin / JVM](https://spdf.joseluissaorin.com/es/documentacion/kotlin.md): `implementation("io.github.joseluissaorin:spdf:5.0.0")`. Kotlin y Java sobre la JVM y Android.
- [Go](https://spdf.joseluissaorin.com/es/documentacion/go.md): `go get github.com/joseluissaorin/spdf/go`. Módulo de Go dentro del monorepo.
- [C# / .NET](https://spdf.joseluissaorin.com/es/documentacion/dotnet.md): `dotnet add package Spdf.Format`. .NET con Microsoft.Data.Sqlite.
- [PHP](https://spdf.joseluissaorin.com/es/documentacion/php.md): `composer require joseluissaorin/spdf`. PDO SQLite.
- [Ruby](https://spdf.joseluissaorin.com/es/documentacion/ruby.md): `gem install spdf-format`. Sobre la gema sqlite3.
- [R](https://spdf.joseluissaorin.com/es/documentacion/r.md): `remotes::install_github("joseluissaorin/spdf", subdir = "r")`. Sobre RSQLite; los fragmentos como data frames.
- [Julia](https://spdf.joseluissaorin.com/es/documentacion/julia.md): `pkg> add SPDF`. Sobre SQLite.jl.
- [C](https://spdf.joseluissaorin.com/es/documentacion/c.md): `#include "spdf.h"  /* link with -lspdf */`. ABI de C sobre el núcleo de Rust, para C, C++ y cualquier FFI.

## Las mismas operaciones en todas

| Operación | Qué devuelve |
| --- | --- |
| abrir | Un acceso de solo lectura a un fichero 5.0 o heredado 4.x, abierto con seguridad |
| validar | `{valid, version, profile, errors, warnings}` con los códigos de la especificación |
| volcar | El JSON canónico del fichero (RFC 8785) |
| buscar (léxica, vectorial, híbrida) | Resultados `{fragment_id, score, via, anchor, anchor_uri}` |
| URI de ancla | Escribir y leer URI `spdf:`, byte a byte |
| citar | `(Apellido, Año, localizador)` en castellano o en inglés |
| exportar | CSL-JSON y BibTeX |
| construir | Un SPDF nuevo y válido a partir de tus propios datos |

## Sin ninguna biblioteca

Un fichero SPDF es una base de datos SQLite. Cualquier herramienta que hable SQLite lo lee; solo hay que tener cuidado con las reglas de seguridad y con las anclas.

```sh
sqlite3 -readonly darwin-origin.spdf "SELECT key, value FROM spdf_meta"
sqlite3 -readonly darwin-origin.spdf \
  "SELECT f.id, u.printed, substr(f.text, 1, 80)
     FROM fragments_fts JOIN fragments f ON f.n = fragments_fts.rowid
     JOIN units u ON u.id = f.unit
    WHERE fragments_fts MATCH 'selection' LIMIT 5"
```

Los ficheros heredados 4.x de Scholaris vienen envueltos en gzip: antes, `gzip -dc viejo.spdf > viejo.sqlite`.
