diff --git a/scripts/rdf.py b/scripts/rdf.py index 3308cc3..bef538c 100755 --- a/scripts/rdf.py +++ b/scripts/rdf.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import bisect import os import pathlib import rdflib @@ -17,7 +18,7 @@ if not DEBIMAN_SERVING_DIR: MANPAGE = Namespace('dokk:manpages:') -g = Graph() +g_distro = Graph() for absolute_file_path in pathlib.Path(DEBIMAN_SERVING_DIR).glob('**/*.roff'): if not absolute_file_path.is_file(): @@ -59,34 +60,38 @@ for absolute_file_path in pathlib.Path(DEBIMAN_SERVING_DIR).glob('**/*.roff'): html = '' # Create a graph node for this manpage + g_page = Graph() + page_ref = URIRef('dokk:manpages:debian/' + urllib.parse.quote(f'{distro_number}/{distro_package}/{filename}')) - g.add((page_ref, RDF.type, URIRef(MANPAGE.Page))) - g.add((page_ref, URIRef(MANPAGE.filename), Literal(filename))) - g.add((page_ref, URIRef(MANPAGE.name), Literal(name))) - g.add((page_ref, URIRef(MANPAGE.name_lowercase), Literal(name.lower()))) - g.add((page_ref, URIRef(MANPAGE.section), Literal(section))) - g.add((page_ref, URIRef(MANPAGE.section_lowercase), Literal(section.lower()))) - g.add((page_ref, URIRef(MANPAGE.section_number), Literal(section_number))) - g.add((page_ref, URIRef(MANPAGE.subsection), Literal(subsection))) - g.add((page_ref, URIRef(MANPAGE.language), Literal(language))) - g.add((page_ref, URIRef(MANPAGE.roff), Literal(roff))) - g.add((page_ref, URIRef(MANPAGE.plaintext), Literal(plaintext))) - g.add((page_ref, URIRef(MANPAGE.html), Literal(html))) + g_page.add((page_ref, RDF.type, URIRef(MANPAGE.Page))) + g_page.add((page_ref, URIRef(MANPAGE.filename), Literal(filename))) + g_page.add((page_ref, URIRef(MANPAGE.name), Literal(name))) + g_page.add((page_ref, URIRef(MANPAGE.name_lowercase), Literal(name.lower()))) + g_page.add((page_ref, URIRef(MANPAGE.section), Literal(section))) + g_page.add((page_ref, URIRef(MANPAGE.section_lowercase), Literal(section.lower()))) + g_page.add((page_ref, URIRef(MANPAGE.section_number), Literal(section_number))) + g_page.add((page_ref, URIRef(MANPAGE.subsection), Literal(subsection))) + g_page.add((page_ref, URIRef(MANPAGE.language), Literal(language))) + g_page.add((page_ref, URIRef(MANPAGE.roff), Literal(roff))) + g_page.add((page_ref, URIRef(MANPAGE.plaintext), Literal(plaintext))) + g_page.add((page_ref, URIRef(MANPAGE.html), Literal(html))) + + print(g.serialize(format='nt')) # Create a graph node for this package # Link to the page node package_ref = URIRef('dokk:manpages:debian/' + urllib.parse.quote(f'{distro_number}/{distro_package}')) - g.add((package_ref, RDF.type, URIRef(MANPAGE.Package))) - g.add((package_ref, MANPAGE.name, Literal(distro_package))) - g.add((package_ref, MANPAGE.page, page_ref)) + g_distro.add((package_ref, RDF.type, URIRef(MANPAGE.Package))) + g_distro.add((package_ref, MANPAGE.name, Literal(distro_package))) + g_distro.add((package_ref, MANPAGE.page, page_ref)) # Create a graph node for this distro # Link to the package node distro_ref = URIRef('dokk:manpages:debian/' + urllib.parse.quote(f'{distro_number}')) - g.add((distro_ref, RDF.type, URIRef(MANPAGE.Distribution))) - g.add((distro_ref, MANPAGE.name, Literal('debian'))) - g.add((distro_ref, MANPAGE.codename, Literal(distro_codename))) - g.add((distro_ref, MANPAGE.number, Literal(distro_number))) - g.add((distro_ref, MANPAGE.package, package_ref)) + g_distro.add((distro_ref, RDF.type, URIRef(MANPAGE.Distribution))) + g_distro.add((distro_ref, MANPAGE.name, Literal('debian'))) + g_distro.add((distro_ref, MANPAGE.codename, Literal(distro_codename))) + g_distro.add((distro_ref, MANPAGE.number, Literal(distro_number))) + g_distro.add((distro_ref, MANPAGE.package, package_ref)) -print(g.serialize(format='nt')) +print(g_distro.serialize(format='nt'))