This page describes the technical setup of the FactGrid website and services. FactGrid currently runs on a single virtual server, and all the file system paths mentioned here refer to that server.
This list is very incomplete. I hope to add to it in the future if any further packages are installed, but many existing installed packages are not recorded here.
- php-intl for Unicode support in QuickStatements
MediaWiki is installed under
/var/www/ as document root,
with the standard MediaWiki short URL setup to rewrite
The job queue is processed by the
The git repositories for quickstatements and its dependency magnustools are cloned under
and symlinks in
/var/www/ point into their
There is an
oauth.ini configuration file in
(for this consumer,
with a request modeled after the original Wikidata consumer),
config.json file in
/src/quickstatements/public_html/ describes the URL layout of the FactGrid site
and selects FactGrid as the site to use.
Logs go to
which is owned by the
www-data group and group-writable.
Batches which the user requests to run in the background,
instead of directly in the browser,
are saved to the
to which the
quickstatements SQL user has access;
an ugly hack in the
openDbTool function in
overrides the normal (very Toolforge-specific) database access code
to instead open that database using the password residing in the
which is owned by the
www-data group and group- but not world-readable.
QuickStatements has also been patched to format batch links in its edit summaries
quickstatements: link prefix,
instead of the usual
quickstatements: interwiki prefix was installed with the following command
INSERT INTO factgridinterwiki (iw_prefix, iw_url, iw_local, iw_trans) VALUES ('quickstatements', '/quickstatements/$1', 1, 0);
The bot which actually processes the batches runs as
loading batches from the database and sending the appropriate edit requests to the API.
(When it has nothing to do, it sleeps in one-second intervals.)
Make sure to run
systemctl restart quickstatements-bot whenever code changes to QuickStatements are made,
otherwise the bot will not pick them up.
The git repository for reasonator is cloned under
and a symlink in
/var/www/ points into its
config.json is copied from
with some property IDs replaced with their FactGrid equivalent,
a few replaced with “TODO”,
and most other property IDs completely removed because they don’t apply to FactGrid.
There are also minor uncommitted changes in
vue.js (avoid CORS errors) and
main-page.html (replace example items),
though hopefully those should become unnecessary in the future.
The query service source is cloned in
built using ant as described in the “getting started” document,
and unzipped into
/srv/wdqs/ is a symlink).
RWStore.properties is edited to adjust the location of the journal file,
which we have in
There is also a nearly-empty
mwservices.conf file (
to avoid a warning if that file is missing completely.
The query service itself runs as the
blazegraph.service systemd unit
systemctl cat blazegraph to see the configuration files).
Its standard output and error go to the journal,
and can be viewed by administrators with
journalctl -u blazegraph (add
-e for the latest messages).
The updater for the query service,
which reads updates from the wiki’s recent changes and applies them to the query service,
similarly runs as
The query service UI is cloned in
It can be built using
npm run build,
and the resulting
build/ directory is then copied into
with a symlink
/var/www/query pointing to the latest version.
A few of the files in the repository have uncommitted changes specific to FactGrid;
before updating the GUI, they have to be stashed away.
git stash save && git pull && git stash pop && npm run build && now=$(date -Iseconds) && cp -a build/ /var/www/query-"$now" && ln -sfT query-"$now" /var/www/query # atomically update symlink # optional: remove the old /var/www/query-* directory