21 a 25 de octubre de 2024
Universidad Autónoma de San Luis Potosí
Mtra. Irmarie Fraticelli-Rodríguez
Yale University Library
Equipo de Servicios de Metadatos
Analista de Metadatos
irma.fraticelli@yale.edu
Bibliotecario para la Investigación Aplicada de Metadatos
timothy.thompson@yale.edu
Hora |
Tema |
9:00–9:15 |
Repaso del día anterior |
9:15–10:15 |
Actividad con Turtle, discusión |
10:15–10:45 |
BIBFRAME |
10:45–11:00 |
Receso |
11:00–12:45 |
BIBFRAME en español |
12:45–1:00 |
Discusión |
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Crédito: Thomas Meehan, "MARC and BIBFRAME", 2014.
Modelo Conceptual
Forma abstracta de pensar sobre el mundo,
de manera holística, consistente y coherente.
Ontología
Conjunto compartido de términos para codificar ese pensamiento
de forma lógica y procesable por máquinas (por ejemplo, en RDF).
Crédito: Rob Sanderson, "BibFrame Needs a Usability Makeover (And it's as Easy as ABC)".
Definen clases y propiedades aplicables a una amplia gama de casos y contextos.
Vocabulario | Términos |
---|---|
schema | CreativeWork > WebPage, name, author |
dcterms | Agent, BibliographicResource, title, creator |
foaf | Agent, Document, name, knows, maker |
skos | Concept, prefLabel, altLabel, broader, narrower |
Crédito: Gloria González, "Acciones de Préstamo y Datos Vinculados de Bibliotecas en EBSCO".
Ejemplo: Pancho Villa en Google
Ejemplo del catálogo de la Universidad de Almería:
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "/fulldisplay/alma991001882797904991/34CBUA_UAL:VU1",
"identifier": {
"@type": "PropertyValue",
"propertyID": "local",
"value": "alma991001882797904991"
},
"name": "Ejército constitucionalista : división del norte manifiesto del general Francisco Villa a la nación y documentos que justifican el desconocimiento del C. Venustiano Carranza como primer jefe de la revolución 1914 / Francisco Villa.",
"mainEntity": {
"@type": "Book",
"@id": "#Book",
"inLanguage": "spa",
"publisher": "2013",
"about": [
{
"@type": "Thing",
"name": "Carranza, Venustiano, 1859-1920"
},
{
"@type": "Thing",
"name": "Mexico -- History -- Revolution, 1910-1920"
},
{
"@type": "Thing",
"name": "México -- Historia -- Revolución, 1910-1920"
}
],
"isbn": "1-4492-9977-6",
"bookFormat": "1 online resource (146 p.)"
}
}
@prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<https://bibfra.mx/alejandra> foaf:name "Alejandra" .
@base
)@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<alicia> foaf:name "Alicia" .
@base
para declarar la URI base de un archivo Turtle. Cualquier URI relativo en nuestros datos será entonces resuelto contra la base.https://bibfra.mx/alicia>
, podemos declarar un URI base y luego usar URIs relativos.@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<alejandra> foaf:name "Alejandra" .
Podemos repetir afirmaciones sobre el mismo tema usando punto y coma.
@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<alejandra> foaf:name "Alejandra" ; foaf:nick "Ale" .
Nota: Observa el espacio alrededor de la puntuación. (Espaciado no es requerido, pero facilita la lectura de la sintaxis.)
Podemos repetir objetos para el mismo predicado usando comas.
@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<alejandra> foaf:name "Alejandra", "Ale" .
xsd
.@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#fecha> .
<alejandra> foaf:name "Alejandra" ; <birthDate> "1946"^^xsd:date .
@base <https://bibfra.mx/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#fecha> .
<alejandra> foaf:name "Alejandra" ;
foaf:knows [ a foaf:Person ] ;
foaf:knows _:b1 .
_:b1 a foaf:Person .
Nota: El ejemplo muestra dos formas diferentes de codificar un nodo en blanco: uno con un identificador (_:b1
) y otro con corchetes cuadrados. Los identificadores de nodos en blanco no están garantizados de ser únicos entre diferentes archivos Turtle.
También podemos definir listas, que pueden ser complicadas en RDF, pero son fáciles de escribir en Turtle.
@base <https://bibfra.mx/> .
@prefix foaf:<http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#fecha> .
<alejandra> foaf:name "Alejandra" ;
foaf:knows (_:b1 _:b2 _:b3) .
Además, Turtle define una expresión abreviada para el predicado RDF predefinido rdf:type
.
En Turtle, podemos usar la palabra "a
" en lugar de rdf:type
.
De esa manera, se lee casi como una oración en inglés:
Nota: rdf:type
es un predicado importante porque nos permite decir de qué tipo de entidad se trata (a qué clase de cosas pertenece).
@base <https://bibfra.mx/> .
@prefix foaf:<http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#fecha> .
<alejandra> a foaf:Person .
Por último, podemos agregar comentarios a nuestros datos para proporcionar aclaraciones.
@base <https://bibfra.mx/> .
@prefix foaf:<http://xmlns.com/foaf/0.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#fecha> .
# Alejandra es una persona muy amable.
<alejandra> a foaf:Person .
#
).@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
<https://bibfra.mx/data/dataset> a schema:Dataset ;
dcterms:title "Participantes del taller" ;
dcterms:description "Conjunto de datos que contiene información acerca de personas, sus instituciones y las ubicaciones de estas." ;
dcterms:created "2023-05-08"^^xsd:date ;
dcterms:creator <https://bibfra.mx/data/person/49274> .
<https://bibfra.mx/data/person/49274> a schema:Person ;
foaf:name "Timothy Thompson" .
<https://bibfra.mx/ontology/User> a rdfs:Class ;
rdfs:label "User" ;
skos:definition "Usuario con ID, nombre, nombre de usuario, institución y información de ubicación." .
<https://bibfra.mx/ontology/id> a rdf:Property ;
rdfs:label "ID" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:integer ;
skos:definition "Identificador único para el usuario." .
<https://bibfra.mx/ontology/name> a rdf:Property ;
rdfs:label "Nombre" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:string ;
skos:definition "Nombre completo del usuario." .
<https://bibfra.mx/ontology/username> a rdf:Property ;
rdfs:label "User" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:string ;
skos:definition "Nombre de usuario del usuario." .
<https://bibfra.mx/ontology/institution> a rdf:Property ;
rdfs:label "Inst" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range schema:EducationalOrganization ;
skos:definition "Institución a la que pertenece el usuario." .
<https://bibfra.mx/ontology/location> a rdf:Property ;
rdfs:label "Loc" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range schema:Country ;
skos:definition "País en el que se ubica la institución del usuario." .
Agrega una nueva tripleta con una persona3
y asígnale un nombre.
<https://bibfra.mx/data/person/person1> <http://xmlns.com/foaf/0.1/name> "Alejandra" .
<https://bibfra.mx/data/person/person2> <http://xmlns.com/foaf/0.1/name> "Roberto" .
Reescribe estos triples usando la característica de Turtle que nos permita evitar repetir un sujeto.
<https://bibfra.mx/data/person/person1> <http://xmlns.com/foaf/0.1/name> "Alejandra" .
<https://bibfra.mx/data/person/person1> <http://xmlns.com/foaf/0.1/knows> <https://bibfra.mx/data/person/person2> .
Ahora acorta las URIs declarando prefijos en la parte superior y utilizando la forma calificada.
<https://bibfra.mx/data/person/person1> <http://xmlns.com/foaf/0.1/name> "Alejandra" ;
<http://xmlns.com/foaf/0.1/knows> <https://bibfra.mx/data/person/person2> .
Explora el vocabulario de Schema.org y descubre qué tipos de entidades y propiedades están definidas allí.
Enumera cinco posibles "plantillas de tripletas" en una tabla como la de arriba, utilizando clases que puedan estar relacionadas entre sí como sujeto y objeto.
Sujeto (Dominio) | Propiedad | Objeto (Rango) |
---|---|---|
Utiliza el predicado rdf:type
o el atajo especial "a
" para indicar de qué tipo de cosa se trata el sujeto de estas declaraciones.
Elige un término de Schema.org.
@prefix schema: <http://schema.org/>.
<> a schema: ;
schema:name "" ;
schema:author <> .
Explora la especificación de vocabulario para FOAF y mira qué tipos de entidades y propiedades están definidas allí.
Enumera cinco posibles "plantillas de tripletas" en una tabla como la de arriba, utilizando clases que puedan estar relacionadas entre sí como sujeto y objeto.
Sujeto (Dominio) | Propiedad | Objeto (Rango) |
---|---|---|
Usando FOAF, elige algunos términos para comenzar a crear un perfil para ti mismo.
¿Cuántas declaraciones puedes agregar?
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
<> foaf:firstName "" ;
foaf:lastName "" ;
foaf:knows <> .
Explora la especificación del vocabulario de Términos de Dublin Core.
Completa los valores faltantes y agrega más declaraciones.
@prefix dcterms: <https://purl.org/dc/terms/> .
<https://metadatafram.es/data/document> dcterms:title "Una Introducción a RDF" ;
dcterms:creator <> ;
dcterms:date "" .
@base <urn:name/> .
<alejandra> a <Person> ; <age> 77 .
¿Dónde están los nodos en blanco en estas declaraciones?
Identifícalos usando comentarios.
Reescribe los nodos en blanco utilizando una sintaxis alternativa y completa las declaraciones.
@prefix bf: <http://id.loc.gov/ontologies/bibframe/> .
@prefix dcterms: <https://purl.org/dc/terms/> .
@prefix schema: <http://schema.org/> .
<> a schema:Book ;
bf:title [
a bf:Title ; bf:mainTitle "" ;
dcterms:creator []
] .
Ahora revisen la pequena ontología que representa los datos de la hoja de cálculo mostrada anteriormente.
¿Pueden identificar posibles problemas o inconsistencias en cómo se han modelado los datos?
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
<https://bibfra.mx/data/dataset> a schema:Dataset ;
dcterms:title "Participantes del taller" ;
dcterms:description "Conjunto de datos que contiene información acerca de personas, sus instituciones y las ubicaciones de estas." ;
dcterms:created "2023-05-08"^^xsd:date ;
dcterms:creator <https://bibfra.mx/data/person/49274> .
<https://bibfra.mx/data/person/49274> a schema:Person ;
foaf:name "Timothy Thompson" .
<https://bibfra.mx/ontology/User> a rdfs:Class ;
rdfs:label "User" ;
skos:definition "Usuario con ID, nombre, nombre de usuario, institución y información de ubicación." .
<https://bibfra.mx/ontology/id> a rdf:Property ;
rdfs:label "ID" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:integer ;
skos:definition "Identificador único para el usuario." .
<https://bibfra.mx/ontology/name> a rdf:Property ;
rdfs:label "Nombre" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:string ;
skos:definition "Nombre completo del usuario." .
<https://bibfra.mx/ontology/username> a rdf:Property ;
rdfs:label "User" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range xsd:string ;
skos:definition "Nombre de usuario del usuario." .
<https://bibfra.mx/ontology/institution> a rdf:Property ;
rdfs:label "Inst" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range schema:EducationalOrganization ;
skos:definition "Institución a la que pertenece el usuario." .
<https://bibfra.mx/ontology/location> a rdf:Property ;
rdfs:label "Loc" ;
rdfs:domain <https://bibfra.mx/ontology/User> ;
rdfs:range schema:Country ;
skos:definition "País en el que se ubica la institución del usuario." .