From 61d5011fbc8e15114e11d0e3da64aa5cff3532aa Mon Sep 17 00:00:00 2001 From: Petter Reinholdtsen Date: Mon, 15 Jun 2015 13:50:57 +0200 Subject: [PATCH] New post. --- .../2015-06-15-ownership-graphs-norway.txt | 61 ++++++++++++++++++ ...6-15-ownership-graphs-norway-dagbladet.png | Bin 0 -> 27000 bytes 2 files changed, 61 insertions(+) create mode 100644 blog/data/2015-06-15-ownership-graphs-norway.txt create mode 100644 blog/images/2015-06-15-ownership-graphs-norway-dagbladet.png diff --git a/blog/data/2015-06-15-ownership-graphs-norway.txt b/blog/data/2015-06-15-ownership-graphs-norway.txt new file mode 100644 index 0000000000..5b6cdec525 --- /dev/null +++ b/blog/data/2015-06-15-ownership-graphs-norway.txt @@ -0,0 +1,61 @@ +Title: Graphing the Norwegian company ownership structure +Tags: english, offentlig innsyn +Date: 2015-06-15 13:50 + +

It is a bit work to figure out the ownership structure of companies +in Norway. The information is publicly available, but one need to +recursively look up ownership in all owners to figure out the complete +ownership graph of a given set of companies. To save me the work in +the future, I wrote a script to do this automatically, outputting the +ownership structure using the Graphviz/dotty format. The data source +is web scraping from Proff, because +I failed to find a useful source directly from the official keepers of +the ownership data, Brønnøysundsregistrene.

+ +

To get a owner ship graph, fetch the code from git and run it using +the organisation number. I'm using the Norwegian newspaper Dagbladet +as an example here, as its ownership structure is very simple:

+ +
+% time ./bin/eierskap-dotty 958033540 > dagbladet.dot
+
+real    0m2.841s
+user    0m0.184s
+sys     0m0.036s
+%
+
+ +

The script accept several organisation numbers on the command line, +allowing a cluster of companies to be graphed in the same image. The +resulting dot file for the example above look like this. The edges +are labeled with the ownership percentage, and the nodes uses the +organisation number as their name and the name as the label:

+ +
+digraph ownership {
+rankdir = LR;
+"Aller Holding A/s" -> "910119877" [label="100%"]
+"910119877" -> "998689015" [label="100%"]
+"998689015" -> "958033540" [label="99%"]
+"974530600" -> "958033540" [label="1%"]
+"958033540" [label="AS DAGBLADET"]
+"998689015" [label="Berner Media Holding AS"]
+"974530600" [label="Dagbladets Stiftelse"]
+"910119877" [label="Aller Media AS"]
+}
+
+ +

To view the ownership graph, run "dotty dagbladet.dot" or +convert it to a PNG using "dot -T png dagbladet.dot > +dagbladet.png". This is the result can be seen below:

+ + + +

Note that I suspect the "Aller Holding A/S" entry to be incorrect +data in the official ownership register, as that name is not +registered in the official company register for Norway. The ownership +register is sensitive to typos and there seem to be no strict checking +of the ownership information.

+ +

Let me know if you improve the script or find better data sources. +The code is licensed according to GPL 2 or newer.

diff --git a/blog/images/2015-06-15-ownership-graphs-norway-dagbladet.png b/blog/images/2015-06-15-ownership-graphs-norway-dagbladet.png new file mode 100644 index 0000000000000000000000000000000000000000..78fbb9b8323c058f9eeaf4c94209f8c0a9ae9c4f GIT binary patch literal 27000 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 msxA3{ACRqK{9{mhL!d}G_+wMo