triples
mientras los rdf terms se usan para identificar recursos, los rdf triples se usan para describir recursos: para hacer declaraciones sobre ellos.
los triples están inspirados en una de las formas más simples de estructura de oración en lenguaje natural: las oraciones sujeto-verbo-objeto (SVO):
Lemon contains Citrus
sujeto verbo objeto
sin embargo, muchas veces una oración quiere expresar una relación más compleja entre sujeto y objeto que un simple verbo. en ese caso la relación se generaliza como un predicado (SPO):
Boston has population 868,222
sujeto predicado objeto
de forma análoga, un rdf triple es una declaración simple compuesta de tres elementos ordenados: sujeto, predicado y objeto. pero como vimos antes, strings simples como "Boston" no son identificadores adecuados en rdf. en cambio, cada una de las tres posiciones del triple es ocupada por un rdf term:
ex:Lemon ex:contains ex:Citrus
ex:Boston ex:hasPopulation "646,000"^^xsd:integer
ex:VoynichManuscript ex:hasAuthor _:b # autor desconocido → blank node
ex:Citrus ex:containedIn ex:Lemon # inverso del primeroel cuarto triple tiene exactamente el mismo significado intencional que el primero, pero con sujeto y objeto invertidos. aunque el sujeto suele considerarse el “recurso primario” que se describe, esa distinción es frecuentemente arbitraria: se pueden definir predicados inversos que intercambian los roles mientras describen lo mismo.
restricciones de posición
los rdf terms no pueden aparecer en cualquier posición del triple. las restricciones son:
| posición | tipos permitidos |
|---|---|
| sujeto | IRI, blank node |
| predicado | IRI (solo) |
| objeto | IRI, blank node, literal |
dicho de otra forma:
- los literales solo pueden aparecer en posición de objeto
- los blank nodes solo pueden aparecer en sujeto u objeto
- las IRIs pueden aparecer en cualquier posición
estas restricciones responden a decisiones de diseño tomadas desde el inicio de rdf:
- las relaciones deben estar siempre nombradas. un predicado sin IRI no tiene identidad global
- un literal como
"has population"refiere al string en sí mismo, no a una relación del mismo nombre — usarlo como predicado sería semánticamente incorrecto - los literales son considerados recursos secundarios que no deberían ser el sujeto principal de descripciones rdf — decisión más controversial, que el grupo de trabajo de rdf 1.1 discutió relajar sin llegar a ninguna acción
existe una definición no-normativa de generalised triple en el estándar que elimina estas restricciones, pero no forma parte del rdf oficial.
definición formal
construyendo sobre la definición de rdf terms (donde es el conjunto de IRIs, el de blank nodes y el de literales), la definición formal de un triple es:
rdf triple
un rdf triple es cualquier elemento del conjunto , donde se llama sujeto, se llama predicado y se llama objeto.
donde es notación abreviada para .
dicho sin notación de conjuntos: un triple es un rdf triple si y solo si es IRI o blank node, es IRI, y es IRI, blank node o literal.
esta definición conceptual es útil para hablar de rdf en términos matemáticos generales, sin depender de ninguna sintaxis concreta (turtle, n-triples, rdf/xml, etc.).
aridad fija y por qué 3
el modelo de datos de rdf tiene aridad fija de 3 — cada tupla tiene exactamente tres elementos. esto juega un rol importante en cómo datos rdf de distintas fuentes pueden combinarse: dos grafos con el mismo triple comparten exactamente esa declaración, sin ambigüedad sobre qué posición corresponde a qué.
una pregunta razonable es por qué rdf no se basó en pares (2-tuplas) o cuádruplas (4-tuplas). la respuesta concisa del libro:
3 es la aridad mínima necesaria para representar convenientemente información arbitraria usando conjuntos no ordenados.
con pares, no hay forma de distinguir el rol de cada elemento sin convenciones adicionales. con cuádruplas se gana expresividad pero se pierde la simplicidad que hace que grafos de distintas fuentes sean directamente combinables. el triple es el punto de equilibrio.
vocabulario y modelado
clases y propiedades
las descripciones rdf se componen de dos tipos conceptuales de alto nivel: propiedades y clases.
- las propiedades son las relaciones que se sostienen entre pares de recursos. términos que se usan principalmente en posición de predicado
- las clases son grupos de recursos con similitudes conceptuales, agrupan recursos del mismo tipo. un recurso puede ser miembro de múltiples clases. un miembro de una clase se llama instancia de esa clase; la clase de un recurso se llama su tipo
rdf provee dos términos built-in para trabajar con clases y propiedades:
rdf:type— propiedad para relacionar una instancia con su claserdf:Property— la clase de todas las propiedades
ex:Lemon rdf:type ex:Fruit . # Lemon es instancia de Fruit
ex:contains rdf:type rdf:Property . # contains es una propiedadclases y propiedades proveen un vocabulario de alto nivel: un conjunto de rdf terms; para uso general en descripciones rdf. una sola propiedad o clase puede usarse para describir una cantidad arbitraria de instancias. los vocabularios pueden reutilizarse trivialmente entre fuentes rdf independientes. datasets que acuerdan en vocabularios son más integrables entre sí porque hablan el mismo idioma.
la semántica de clases y propiedades puede hacerse explícita usando estándares construidos encima de rdf (como rdfs y owl) donde se puede definir, por ejemplo, que ex:contains es la inversa de ex:containedIn, o que cualquier instancia de ex:DessertRecipe es también instancia de la clase más general ex:Dessert.
en trama…
los triples son la unidad atómica de todo lo que trama almacena y consulta. la distinción clases/propiedades se ve directamente en la ontología:
# clases — agrupan recursos del mismo tipo
trama:Club rdf:type owl:Class .
# propiedades — relaciones entre recursos
trama:alianzaCon rdf:type owl:SymmetricProperty .
trama:perteneceA rdf:type owl:ObjectProperty .
# instancias — recursos que pertenecen a una clase
trama:ACM_UTEC rdf:type trama:OrganizacionEstudiantil .
trama:IEEE_UTEC rdf:type trama:OrganizacionEstudiantil .el hecho de que trama reuse vocabularios estándar (foaf:, schema:, org:) en lugar de definir todo bajo trama: es exactamente el principio de integración que menciona el libro: datasets que acuerdan en vocabularios son más integrables. un sistema externo que entiende foaf:Person ya sabe interpretar los docentes de trama sin documentación adicional.
# un triple de trama: sujeto IRI, predicado IRI, objeto IRI
trama:ACM_UTEC trama:alianzaCon trama:IEEE_UTEC .
# sujeto IRI, predicado IRI, objeto literal
trama:ACM_UTEC trama:area "Especializada"^^xsd:string .
la restricción de que los literales solo aparecen en posición de objeto explica por qué en trama todas las propiedades de datos (trama:area, trama:contacto, trama:ciclo) tienen literales como objeto y nunca como sujeto. y la restricción de que el predicado solo puede ser IRI es la razón por la que cada propiedad de trama tiene su propio IRI bajo https://trama.edu/ontology#; no se pueden usar strings arbitrarios como relaciones.