Skip to content

Instantly share code, notes, and snippets.

@xflr6
Last active October 13, 2025 17:38
Show Gist options
  • Select an option

  • Save xflr6/9ae65e32e0f325b72594 to your computer and use it in GitHub Desktop.

Select an option

Save xflr6/9ae65e32e0f325b72594 to your computer and use it in GitHub Desktop.
Example building RDF with rdflib
"""Build RDF with rdflib and serialize in turtle format."""
import rdflib
from rdflib.namespace import DCTERMS, RDF, RDFS, SKOS, VOID
GOLD = rdflib.Namespace('http://purl.org/linguistics/gold/')
LANGUOID = rdflib.Namespace('http://glottolog.org/resource/languoid/id/')
PREFIXES = {'dcterms': DCTERMS,
'gold': GOLD,
'languoid': LANGUOID,
'rdf': RDF,
'rdfs': RDFS,
'skos': SKOS,
'void': VOID}
g = rdflib.Graph(identifier='https://glottolog.org', bind_namespaces='none')
for prefix, namespace in PREFIXES.items():
g.bind(prefix, namespace)
l = g.resource(LANGUOID['ainu1252'])
name_en = rdflib.Literal('Ainu', lang='en')
l.add(RDF.type, DCTERMS.LinguisticSystem)
l.add(RDF.type, GOLD.LanguageFamily)
l.add(RDFS.label, name_en)
l.add(VOID.inDataset, rdflib.URIRef('https://glottolog.org/'))
l.add(DCTERMS.title, name_en)
l.add(DCTERMS.spatial, rdflib.Literal('Eurasia'))
l.add(SKOS.prefLabel, name_en)
l.add(SKOS.altLabel, rdflib.Literal('ainu1252', lang='x-clld'))
l.add(SKOS.scopeNote, rdflib.Literal('language', lang='x-clld'))
l.add(SKOS.narrower, LANGUOID['hokk1250'])
l.add(SKOS.narrower, LANGUOID['sakh1245'])
g.print()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment