How the FIFA World Cup 2026 player intelligence reports became a live VirtuosoWebDAV weblog: ordinary HTML report files remain the source of truth, while a VSP entry point turns the folder into a browsable, feed-enabled publication.
A WebDAV folder holds the reports.A VSP page reads the folder.Virtuoso publishes the folder as a weblog.RSS, Atom, AtomPub, archive navigation, and direct post links emerge from the same file collection.
Narrated Screencast
Watch the Construction Chain
The screencast follows the storyboard scene order: the WebDAV source folder, the index.vsp weblog engine and publication shell, RSS and Atom feeds served from the same collection, the friendly public route, a selected post rendered inside the weblog shell, and finally that post's direct WebDAV resource link.
The weblog begins with ordinary HTML documents at /DAV/home/demo/Public/fifa-kg-player-reports/. Each player report is already a self-contained intelligence artifact generated from the OpenLink FIFA World Cup Knowledge Graph. The folder is not a staging abstraction — it is the publishing substrate.
Lionel Messi
Rodri
Erling Haaland
Ousmane Dembele
Pau Cubarsi
Lamine Yamal
Michael Olise
Kylian Mbappe
Jude Bellingham
Achraf Hakimi
Luis Diaz
Mohamed Salah
Scenes 2-4
Posts, Engine, and Publication Shell
Each .html file is treated as a weblog post. Virtuoso enumerates the WebDAV collection dynamically through its resource tables — the post list is not hand-maintained, and the newest resources appear first. Every post keeps two identities: its direct WebDAV resource URL, and its weblog permalink through the VSP route.
index.vsp is the weblog engine. It renders a publication shell — a sticky masthead, RSS/Atom/AtomPub links, a recency-ordered archive sidebar, search and filtering, and selected-post rendering through ?post={filename} — around the reports, while preserving the reports themselves inside an embedded reading frame. The reader experiences a weblog; the system still operates on files.
WebDAV FolderOrdinary HTML files
index.vspEnumerates and renders
Publication ShellMasthead, sidebar, feeds
Selected Post?post={filename}
Scene 5
Feeds From the Same Folder
The same index.vsp entry point serves alternate feed modes from the same discovered post list used by the HTML view — no separate feed generator required. Each feed item points back to the weblog route and the selected report.
Mode
Query
Content-Type
RSS 2.0
?a=rss
application/rss+xml
Atom 1.0
?a=atom
application/atom+xml
AtomPub service
?a=atomPub
application/atomsvc+xml
The AtomPub service document downloads rather than renders inline in most browsers (its atomsvc+xml content type is not a browser-displayable format), so the screencast shows RSS and Atom live; the AtomPub response is captured here instead:
$ curl -s https://demo.openlinksw.com/DAV/home/demo/Public/fifa-kg-player-reports/index.vsp?a=atomPub
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
<workspace>
<atom:title>FIFA KG Player Reports</atom:title>
<collection href="index.vsp">
<atom:title>Posts</atom:title>
</collection>
</workspace>
</service>
Scene 6
The Route
Virtuoso maps friendly public paths to the DAV collection via a VHOST mapping, declaring index.vsp as the default page. This is the moment the folder gains a public weblog address — and the mapping keeps the DAV collection executable as VSP, so the browser receives the rendered weblog rather than raw server-page source.
Each report HTML file keeps its own intelligence sections — identity, tournament snapshot, passing and physical analytics, event maps, and live SPARQL query links. The weblog does not flatten or rewrite that content; it presents the selected report in context and supplies navigation around it. When a report is improved, the WebDAV resource is replaced, and the weblog picks up the improved document from the same collection.
The construction bundle that deploys the engine separates two concerns: content publication (the player report HTML files in WebDAV) and weblog engine publication (the VSP page, deploy SQL, and route mapping). That separation is what keeps the weblog maintainable.
Bundle File
Role
index.vsp
Weblog engine and publication shell
deploy-fifa-kg-player-reports-weblog.sql
Uploads index.vsp into the DAV collection
define-fifa-kg-player-reports-route.sql
Defines the friendly VHOST routes
build_deploy_sql.py
Regenerates the deploy/route SQL from index.vsp
README.md
Target collection, entry point, feed checks
Scene 9
Metadata and Facets
WebDAV resource metadata can carry schema:category values. When present, the weblog engine can expose category facets and filtered archive views without a separate content-management database — the file remains the post, and DAV properties enrich how it is discovered.
Scene 10
Publication Checks
The final check confirms the whole construction chain: the reports are in WebDAV, the VSP engine enumerates them, the route executes the engine, the weblog shell renders the selected report, feeds expose the same archive, and direct resource links remain available. At that point, the WebDAV collection has become a weblog.
FIFA KG
-> player report HTML files
-> WebDAV collection
-> index.vsp
-> Virtuoso route
-> weblog + RSS + Atom + AtomPub
Ordinary files became a live, feed-enabled weblog through Virtuoso Server Pages over WebDAV.