mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-26 17:06:22 +02:00
Structure the tech specs directory (#836)
Tech spec some subdirectories for different languages
This commit is contained in:
parent
48da6c5f8b
commit
e7efb673ef
423 changed files with 0 additions and 0 deletions
277
docs/tech-specs/es/ontology.es.md
Normal file
277
docs/tech-specs/es/ontology.es.md
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
---
|
||||
layout: default
|
||||
title: "Especificación Técnica de la Estructura de Ontologías"
|
||||
parent: "Spanish (Beta)"
|
||||
---
|
||||
|
||||
# Especificación Técnica de la Estructura de Ontologías
|
||||
|
||||
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
|
||||
|
||||
## Resumen
|
||||
|
||||
Esta especificación describe la estructura y el formato de las ontologías dentro del sistema TrustGraph. Las ontologías proporcionan modelos de conocimiento formales que definen clases, propiedades y relaciones, lo que permite capacidades de razonamiento e inferencia. El sistema utiliza un formato de configuración inspirado en OWL que representa ampliamente los conceptos de OWL/RDFS, al tiempo que está optimizado para los requisitos de TrustGraph.
|
||||
|
||||
**Convención de Nombres**: Este proyecto utiliza kebab-case para todos los identificadores (claves de configuración, puntos finales de la API, nombres de módulos, etc.) en lugar de snake_case.
|
||||
|
||||
## Objetivos
|
||||
|
||||
- **Gestión de Clases y Propiedades**: Definir clases similares a OWL con propiedades, dominios, rangos y restricciones de tipo.
|
||||
- **Soporte Semántico Avanzado**: Permitir propiedades completas de RDFS/OWL, incluyendo etiquetas, soporte multilingüe y restricciones formales.
|
||||
- **Soporte para Múltiples Ontologías**: Permitir que múltiples ontologías coexistan e interactúen.
|
||||
- **Validación y Razonamiento**: Asegurar que las ontologías cumplan con estándares similares a OWL, con verificación de consistencia y soporte de inferencia.
|
||||
- **Compatibilidad con Estándares**: Soporte de importación/exportación en formatos estándar (Turtle, RDF/XML, OWL/XML) al tiempo que se mantiene la optimización interna.
|
||||
|
||||
## Antecedentes
|
||||
|
||||
TrustGraph almacena ontologías como elementos de configuración en un sistema flexible de clave-valor. Si bien el formato está inspirado en OWL (Web Ontology Language), está optimizado para los casos de uso específicos de TrustGraph y no se adhiere estrictamente a todas las especificaciones de OWL.
|
||||
|
||||
Las ontologías en TrustGraph permiten:
|
||||
- Definición de tipos de objetos formales y sus propiedades.
|
||||
- Especificación de dominios, rangos y restricciones de tipo de propiedades.
|
||||
- Razonamiento e inferencia lógicos.
|
||||
- Relaciones complejas y restricciones de cardinalidad.
|
||||
- Soporte multilingüe para la internacionalización.
|
||||
|
||||
## Estructura de la Ontología
|
||||
|
||||
### Almacenamiento de la Configuración
|
||||
|
||||
Las ontologías se almacenan como elementos de configuración con el siguiente patrón:
|
||||
- **Tipo**: `ontology`
|
||||
- **Clave**: Identificador de ontología único (por ejemplo, `natural-world`, `domain-model`).
|
||||
- **Valor**: Ontología completa en formato JSON.
|
||||
|
||||
### Estructura JSON
|
||||
|
||||
El formato JSON de la ontología consta de cuatro secciones principales:
|
||||
|
||||
#### 1. Metadatos
|
||||
|
||||
Contiene información administrativa y descriptiva sobre la ontología:
|
||||
|
||||
```json
|
||||
{
|
||||
"metadata": {
|
||||
"name": "The natural world",
|
||||
"description": "Ontology covering the natural order",
|
||||
"version": "1.0.0",
|
||||
"created": "2025-09-20T12:07:37.068Z",
|
||||
"modified": "2025-09-20T12:12:20.725Z",
|
||||
"creator": "current-user",
|
||||
"namespace": "http://trustgraph.ai/ontologies/natural-world",
|
||||
"imports": ["http://www.w3.org/2002/07/owl#"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Campos:**
|
||||
- `name`: Nombre legible por humanos de la ontología.
|
||||
- `description`: Descripción breve del propósito de la ontología.
|
||||
- `version`: Número de versión semántico.
|
||||
- `created`: Marca de tiempo ISO 8601 de creación.
|
||||
- `modified`: Marca de tiempo ISO 8601 de última modificación.
|
||||
- `creator`: Identificador del usuario/sistema que creó.
|
||||
- `namespace`: URI base para elementos de la ontología.
|
||||
- `imports`: Matriz de URIs de ontologías importadas.
|
||||
|
||||
#### 2. Clases
|
||||
|
||||
Define los tipos de objetos y sus relaciones jerárquicas:
|
||||
|
||||
```json
|
||||
{
|
||||
"classes": {
|
||||
"animal": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#animal",
|
||||
"type": "owl:Class",
|
||||
"rdfs:label": [{"value": "Animal", "lang": "en"}],
|
||||
"rdfs:comment": "An animal",
|
||||
"rdfs:subClassOf": "lifeform",
|
||||
"owl:equivalentClass": ["creature"],
|
||||
"owl:disjointWith": ["plant"],
|
||||
"dcterms:identifier": "ANI-001"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Propiedades soportadas:**
|
||||
- `uri`: URI completa de la clase.
|
||||
- `type`: Siempre `"owl:Class"`.
|
||||
- `rdfs:label`: Matriz de etiquetas con etiquetas de idioma.
|
||||
- `rdfs:comment`: Descripción de la clase.
|
||||
- `rdfs:subClassOf`: Identificador de la clase padre (herencia simple).
|
||||
- `owl:equivalentClass`: Lista de clases equivalentes.
|
||||
- `owl:disjointWith`: Lista de clases disjuntas.
|
||||
- `dcterms:identifier`: Identificador de la clase.
|
||||
|
||||
#### 3. Propiedades de Objetos
|
||||
|
||||
Define las relaciones entre las clases:
|
||||
|
||||
```json
|
||||
{
|
||||
"objectProperties": {
|
||||
"hasPart": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#hasPart",
|
||||
"type": "owl:ObjectProperty",
|
||||
"rdfs:label": [{"value": "hasPart", "lang": "en"}],
|
||||
"rdfs:comment": "Represents a part-whole relationship",
|
||||
"domain": "lifeform",
|
||||
"range": "lifeform"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Propiedades soportadas:**
|
||||
- `uri`: URI completa de la propiedad de objeto.
|
||||
- `type`: Siempre `"owl:ObjectProperty"`.
|
||||
- `rdfs:label`: Matriz de etiquetas con etiquetas de idioma.
|
||||
- `rdfs:comment`: Descripción de la propiedad de objeto.
|
||||
- `domain`: Clase de dominio de la propiedad de objeto.
|
||||
- `range`: Clase de rango de la propiedad de objeto.
|
||||
|
||||
#### 4. Propiedades de Datos
|
||||
|
||||
Define las características de las clases:
|
||||
|
||||
```json
|
||||
{
|
||||
"datatypeProperties": {
|
||||
"number-of-legs": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#number-of-legs",
|
||||
"type": "owl:DatatypeProperty",
|
||||
"rdfs:label": [{"value": "number-of-legs", "lang": "en"}],
|
||||
"rdfs:comment": "Count of number of legs of the animal",
|
||||
"rdfs:range": "xsd:nonNegativeInteger",
|
||||
"rdfs:domain": "animal"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Propiedades soportadas:**
|
||||
- `uri`: URI completa de la propiedad de datos.
|
||||
- `type`: Siempre `"owl:DatatypeProperty"`.
|
||||
- `rdfs:label`: Matriz de etiquetas con etiquetas de idioma.
|
||||
- `rdfs:comment`: Descripción de la propiedad de datos.
|
||||
- `rdfs:range`: Tipo de datos de la propiedad de datos.
|
||||
- `rdfs:domain`: Clase de dominio de la propiedad de datos.
|
||||
|
||||
### Estructura JSON
|
||||
|
||||
El formato JSON de la ontología consta de cuatro secciones principales:
|
||||
|
||||
#### 1. Metadatos
|
||||
|
||||
Contiene información administrativa y descriptiva sobre la ontología:
|
||||
|
||||
```json
|
||||
{
|
||||
"metadata": {
|
||||
"name": "The natural world",
|
||||
"description": "Ontology covering the natural order",
|
||||
"version": "1.0.0",
|
||||
"created": "2025-09-20T12:07:37.068Z",
|
||||
"modified": "2025-09-20T12:12:20.725Z",
|
||||
"creator": "current-user",
|
||||
"namespace": "http://trustgraph.ai/ontologies/natural-world",
|
||||
"imports": ["http://www.w3.org/2002/07/owl#"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Campos:**
|
||||
- `name`: Nombre legible por humanos de la ontología.
|
||||
- `description`: Descripción breve del propósito de la ontología.
|
||||
- `version`: Número de versión semántico.
|
||||
- `created`: Marca de tiempo ISO 8601 de creación.
|
||||
- `modified`: Marca de tiempo ISO 8601 de última modificación.
|
||||
- `creator`: Identificador del usuario/sistema que creó.
|
||||
- `namespace`: URI base para elementos de la ontología.
|
||||
- `imports`: Matriz de URIs de ontologías importadas.
|
||||
|
||||
#### 2. Clases
|
||||
|
||||
Define los tipos de objetos y sus relaciones jerárquicas:
|
||||
|
||||
```json
|
||||
{
|
||||
"classes": {
|
||||
"lifeform": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#lifeform",
|
||||
"type": "owl:Class",
|
||||
"rdfs:label": [{"value": "Lifeform", "lang": "en"}],
|
||||
"rdfs:comment": "A living thing"
|
||||
},
|
||||
"animal": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#animal",
|
||||
"type": "owl:Class",
|
||||
"rdfs:label": [{"value": "Animal", "lang": "en"}],
|
||||
"rdfs:comment": "An animal",
|
||||
"rdfs:subClassOf": "lifeform"
|
||||
},
|
||||
"cat": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#cat",
|
||||
"type": "owl:Class",
|
||||
"rdfs:label": [{"value": "Cat", "lang": "en"}],
|
||||
"rdfs:comment": "A cat",
|
||||
"rdfs:subClassOf": "animal"
|
||||
},
|
||||
"dog": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#dog",
|
||||
"type": "owl:Class",
|
||||
"rdfs:label": [{"value": "Dog", "lang": "en"}],
|
||||
"rdfs:comment": "A dog",
|
||||
"rdfs:subClassOf": "animal",
|
||||
"owl:disjointWith": ["cat"]
|
||||
}
|
||||
},
|
||||
"objectProperties": {},
|
||||
"datatypeProperties": {
|
||||
"number-of-legs": {
|
||||
"uri": "http://trustgraph.ai/ontologies/natural-world#number-of-legs",
|
||||
"type": "owl:DatatypeProperty",
|
||||
"rdfs:label": [{"value": "number-of-legs", "lang": "en"}],
|
||||
"rdfs:comment": "Count of number of legs of the animal",
|
||||
"rdfs:range": "xsd:nonNegativeInteger",
|
||||
"rdfs:domain": "animal"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Reglas de Validación
|
||||
|
||||
### Validación Estructural
|
||||
|
||||
1. **Consistencia de URI**: Todos los URIs deben seguir el patrón `{namespace}#{identifier}`.
|
||||
2. **Jerarquía de Clases**: No debe haber herencia circular en `rdfs:subClassOf`.
|
||||
3. **Dominios/Rangos de Propiedades**: Deben referenciar clases existentes o tipos XSD válidos.
|
||||
4. **Clases Disjuntas**: No pueden ser subclases entre sí.
|
||||
5. **Propiedades Inversas**: Deben ser bidireccionales si se especifican.
|
||||
|
||||
### Validación Semántica
|
||||
|
||||
1. **Identificadores Únicos**: Los identificadores de clase y propiedad deben ser únicos dentro de una ontología.
|
||||
2. **Etiquetas de Idioma**: Deben seguir el formato de etiqueta de idioma BCP 47.
|
||||
3. **Restricciones de Cardinalidad**: `minCardinality` ≤ `maxCardinality` cuando ambos están especificados.
|
||||
4. **Propiedades Funcionales**: No pueden tener `maxCardinality` > 1.
|
||||
|
||||
## Soporte de Formato de Importación/Exportación
|
||||
|
||||
Si bien el formato interno es JSON, el sistema admite la conversión a/desde formatos de ontología estándar:
|
||||
|
||||
- **Turtle (.ttl)**: Serialización RDF compacta.
|
||||
- **RDF/XML (.rdf, .owl)**: Formato estándar de W3C.
|
||||
- **OWL/XML (.owx)**: Formato XML específico de OWL.
|
||||
- **JSON-LD (.jsonld)**: JSON para Linked Data.
|
||||
|
||||
## Referencias
|
||||
|
||||
- [OWL 2 Web Ontology Language](https://www.w3.org/TR/owl2-overview/)
|
||||
- [RDF Schema 1.1](https://www.w3.org/TR/rdf-schema/)
|
||||
- [XML Schema Datatypes](https://www.w3.org/TR/xmlschema-2/)
|
||||
- [BCP 47 Language Tags](https://tools.ietf.org/html/bcp47)
|
||||
Loading…
Add table
Add a link
Reference in a new issue