Memory Mapped Files

The first thing we need to do to build a database is to find a fast way to read from and write to disk. Whether we are doing I/O on a hard drive or an SSD, the interface to the disk typically works the same. It transfers data into and out of the disk in ‘pages’ or blocks of data. It makes sense to keep data we are likely to access together in the same page so that it is already in memory when we need to access it.
Read more...

Implementing a Triple Store from the Ground Up - Part 1

I’ve long been fascinated with semantic web technologies, the potential of RDF and understanding how to implement a triple store from the ground up. Databases are one of those technologies - like compilers - that we often take for granted, and yet which beneath the hood employs some very sophisticated algorithms and data structures to achieve acceptable levels of performance. In this new article series, I’ll implement a triple store using techniques introduced in recent years for efficiently storing and processing indexes on large knowledge graphs.
Read more...

Note To Self - How to Reclaim Disk Space in a Hurry (Windows 10)

When you suddenly discover that your disk is full, consider doing the following: Work out where the disk is being used, with tree size free $ cinst -y treesizefree If you don’t use hibernation on your machine you could save a lot of space by turning it off $ powercfg.exe /hibernate off Compact the WSL disk if you use WSL $ wsl --shutdown $ optimize-vhd -Path "C:\Users\a30006806\AppData\Local\Docker\wsl\data\ext4.
Read more...

Fishdots plugins get a new lease of life

Last week I mentioned that I was starting a rewrite of Fishdots. Well, a few of the plugins have now been ported over to the new instance of FD, which from now on I will call fd2. They are: aabs/fish_checklists A fish plugin supporting production of event based checklists aabs/fish_git Simple fish plugin with some helpful git abbrs and functions aabs/fish_subcmd Fish shell plugin providing functions to set up multi-level commands (like git)
Read more...

AppImages on WSL2

This is a reminder to self, for those times when you just gotta have vim and fishdots on a recent version of fish shell (and someone upstream has completely screwed up the CA certificates so you can’t use apt or linux brew because they can’t be configured to relax cacert security). First, create a place for them to live mkdir -p ~/bin; cd /tmp Now get fish shell wget --no-check-certificate https://download.
Read more...

Knowledge Graphs 7 - Named Graphs

Knowledge Graphs provide a neat and easy way to segment your data, called ‘Named Graphs’. This post shows how you access them, and different uses they may be put to. This is part 7 of an ongoing series providing a little background on Knowledge Graphs. The aim is to let software developers get up to speed as fast as possible. No theory, no digressions, and no history. Just practical knowledge.
Read more...

OWL2 Snippets for VSCode

I put together a list of OWL2 snippets for Visual Studio Code, for use with Turtle ( *.ttl ) files.

https://github.com/aabs/owl-2-turtle-snippets

The shortcuts cover most of the OWL2 Reference Card. Enjoy.

command shortcut
class /c
add label rlab
add comment rcom
object property ropr
time value rtime
intersect class rintersect
class intersection /ci
class union /cu
class complement /cc
class enumeration /ce
subclass /csub
equivalent classes /cequ
disjoint classes /cd
pairwise disjoint classes /cda
disjoint union /cdu
universal /pru
existential /pre
individual value /pri
local reflexivity /prx
exact cardinality /prc
qualified exact cardinality /prcqxc
maximum cardinality /prcmax
qualified maximum cardinality /prcqmax
minimum cardinality /prcmin
qualified minimum cardinality /prcqmin
n-ary universal /prdu
n-ary existential /prde
inverse property /pv
data range complement /drc
data range intersection /dri
data range union /dru
literal enumeration /denum
datatype restriction /drs
subproperty /ppsub
chain inclusion /ppch
domain /ppdom
range /ppran
equivalent properties /ppequ
disjoint properties /ppd
all disjoint properties /ppdd
inverse properties /ppinv
functional property /ppfun
inverse functional property /ppinfu
reflexive property /ppref
irreflexive property /ppirref
symmetric property /ppsym
Asymmetric Property /ppasym
Transitive Property /pptrans
equality /aeq
prinequality /ane
individual inequality /aane
assertion /ac
object property assertion /aprop
negative object property assertion /anprop
name //l
comment //c
addition information //ai
agent //da
information //v
deprecation //dep
backwards compatibility //bc
incompatibility //incomp
prior version //pv
Read more...

Knowledge Graphs 5 - Modelling with RDFS

This installment moves beyond the simple graph model of RDF to introduce the modelling support of RDF Schema. I will go on to show you how using the W3C Standard RDFS imbues your data with another layer of meaning, and makes it easier for you to enrich your raw data with meaning over time. This is part 5 of an ongoing series providing a little background on ‘knowledge graphs‘. The aim is to let software developers get up to speed as fast as possible.
Read more...

Knowledge Graphs 6 - Semantics

With this installment we finally get to the part of knowledge graphs that I personally find really exciting: Semantics. In this installment, I will introduce some of the simple rules of entailment that are a part of the RDFS standard. This is part 6 of an ongoing series providing a little background on ‘knowledge graphs‘. The aim is to let software developers get up to speed as fast as possible. No theory, no digressions, and no history.
Read more...

Knowledge Graphs 4 - Querying your knowledge graph using .NET

This installment leaves the CLI behind to show how we consume a knowledge graph within our programmatic environments. The framework I use to work with RDF is dotNetRdf. This is part 4 of an ongoing series providing a little background on ‘knowledge graphs’. The aim is to let software developers get up to speed as fast as possible. No theory, no digressions, and no history, just practical knowledge. Knowledge Graphs 101 Knowledge Graphs 2 – Playing on the CLI Knowledge Graphs 3 – Using a Triple Store Knowledge Graphs 4 – Querying your knowledge graph using .
Read more...