brief note on pretty print tables
Just wanted to make a visible note that I tweaked the pretty print table code. We no longer have to do the "extract-value" dance, the table code does that all automatically now. Almost always this is an improvement, though I can think of one case where it might not be. The idea is the column header pretty much indicates the category/data-type, so no need to repeat that for every row in the table.
Old:
sa: load foaf-example-in-sw.sw
sa: table[name,email,works-for] "" |list>
+------------------------+----------------------------------+------------------------+
| name | email | works-for |
+------------------------+----------------------------------+------------------------+
| Dan | email: danbri@w3.org | organisation: ILRT |
| Libby | email: libby.miller@bris.ac.uk | organisation: ILRT |
| Craig | email: craig@netgates.co.uk | organisation: Netgates |
| Liz | | organisation: Netgates |
| Kathleen | | organisation: Netgates |
| Damian | | |
| Martin | email: m.l.poulter@bristol.ac.uk | |
| organisation: ILRT | | |
| organisation: Netgates | | |
+------------------------+----------------------------------+------------------------+
New:
sa: load foaf-example-in-sw.sw
sa: table[name,email,works-for] "" |list>
+----------+---------------------------+-----------+
| name | email | works-for |
+----------+---------------------------+-----------+
| Dan | danbri@w3.org | ILRT |
| Libby | libby.miller@bris.ac.uk | ILRT |
| Craig | craig@netgates.co.uk | Netgates |
| Liz | | Netgates |
| Kathleen | | Netgates |
| Damian | | |
| Martin | m.l.poulter@bristol.ac.uk | |
| ILRT | | |
| Netgates | | |
+----------+---------------------------+-----------+
Old:
sa: load early-us-presidents.sw
sa: table[name,full-name,president-number,party] "" |early US Presidents: _list>
+------------+---------------------------+------------------+------------------------------+
| name | full-name | president-number | party |
+------------+---------------------------+------------------+------------------------------+
| Washington | person: George Washington | number: 1 | party: Independent |
| Adams | person: John Adams | number: 2 | party: Federalist |
| Jefferson | person: Thomas Jefferson | number: 3 | party: Democratic-Republican |
| Madison | person: James Madison | number: 4 | party: Democratic-Republican |
| Monroe | person: James Monroe | number: 5 | party: Democratic-Republican |
| Q Adams | person: John Quincy Adams | number: 6 | party: Democratic-Republican |
+------------+---------------------------+------------------+------------------------------+
sa: years-in-office |*> #=> extract-value president-era |_self>
sa: table[name,years-in-office] "" |early US Presidents: _list>
+------------+------------------------------------------------------+
| name | years-in-office |
+------------+------------------------------------------------------+
| Washington | 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797 |
| Adams | 1797, 1798, 1799, 1800, 1801 |
| Jefferson | 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809 |
| Madison | 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817 |
| Monroe | 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825 |
| Q Adams | 1825, 1826, 1827, 1828, 1829 |
+------------+------------------------------------------------------+
New (NB: we no longer need to define the "years-in-office" operator which applied "extract-value" to the president-era operator):
sa: table[name,full-name,president-number,party] "" |early US Presidents: _list>
+------------+-------------------+------------------+-----------------------+
| name | full-name | president-number | party |
+------------+-------------------+------------------+-----------------------+
| Washington | George Washington | 1 | Independent |
| Adams | John Adams | 2 | Federalist |
| Jefferson | Thomas Jefferson | 3 | Democratic-Republican |
| Madison | James Madison | 4 | Democratic-Republican |
| Monroe | James Monroe | 5 | Democratic-Republican |
| Q Adams | John Quincy Adams | 6 | Democratic-Republican |
+------------+-------------------+------------------+-----------------------+
sa: table[name,president-era] "" |early US Presidents: _list>
+------------+------------------------------------------------------+
| name | president-era |
+------------+------------------------------------------------------+
| Washington | 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797 |
| Adams | 1797, 1798, 1799, 1800, 1801 |
| Jefferson | 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809 |
| Madison | 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817 |
| Monroe | 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825 |
| Q Adams | 1825, 1826, 1827, 1828, 1829 |
+------------+------------------------------------------------------+
And I guess that's it. The difference between old and improved should be obvious enough.
Update: another tweak of the table code. Now we can dump everything we know about a given superposition without having to manually specify all the operators. Makes use of the "supported-ops" operator.
eg, consider:
sa: load foaf-example-in-sw.sw
sa: supported-ops "" |list>
3.000|op: where-live> + 2.000|op: lives-with> + 4.000|op: email> + 5.000|op: works-for> + |op: wife> + |op: knows-quite-well> + |op: where-lives> + 2.000|op: website>
sa: load early-us-presidents.sw
sa: supported-ops "" |early US Presidents: _list>
6.000|op: president-number> + 6.000|op: president-era> + 6.000|op: party> + 6.000|op: full-name>
Point is, we can now do this (NB: the "*" instead of an operator label, noting also that * is not a valid operator name):
sa: table[name,*] "" |list>
+----------+--------------+--------------+---------------------------+-----------+------+---------------------------+-------------+----------------------------+
| name | where-live | lives-with | email | works-for | wife | knows-quite-well | where-lives | website |
+----------+--------------+--------------+---------------------------+-----------+------+---------------------------+-------------+----------------------------+
| Dan | Zetland road | Libby, Craig | danbri@w3.org | ILRT | | | | |
| Libby | | | libby.miller@bris.ac.uk | ILRT | | | | |
| Craig | | | craig@netgates.co.uk | Netgates | Liz | | | |
| Liz | Bristol | Kathleen | | Netgates | | | | |
| Kathleen | | | | Netgates | | | | |
| Damian | London | | | | | | | |
| Martin | | | m.l.poulter@bristol.ac.uk | | | Craig, Damian, Dan, Libby | Bristol | |
| ILRT | | | | | | | | http://ilrt.org/ |
| Netgates | | | | | | | | http://www.netgates.co.uk/ |
+----------+--------------+--------------+---------------------------+-----------+------+---------------------------+-------------+----------------------------+
sa: table[name,*] "" |early US Presidents: _list>
+------------+------------------+------------------------------------------------------+-----------------------+-------------------+
| name | president-number | president-era | party | full-name |
+------------+------------------+------------------------------------------------------+-----------------------+-------------------+
| Washington | 1 | 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797 | Independent | George Washington |
| Adams | 2 | 1797, 1798, 1799, 1800, 1801 | Federalist | John Adams |
| Jefferson | 3 | 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809 | Democratic-Republican | Thomas Jefferson |
| Madison | 4 | 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817 | Democratic-Republican | James Madison |
| Monroe | 5 | 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825 | Democratic-Republican | James Monroe |
| Q Adams | 6 | 1825, 1826, 1827, 1828, 1829 | Democratic-Republican | John Quincy Adams |
+------------+------------------+------------------------------------------------------+-----------------------+-------------------+
I suppose I should make a couple of observations.
1) this code highlighted a bug in my foaf-example data-set! Note the "where-lives" instead of "where-live".
2) the "where-live" column shows one example where the auto extract-value on table elements is not ideal. It chomped off the "UK: " prefix. Recall:
where-live |Dan> => |UK: Bristol: Zetland road>
where-live |Liz> => |UK: Bristol>
where-live |Damian> => |UK: London>
I don't think there is much I can do about it though.
I guess that's it. Quite likely I will tweak the table code yet further!
Update: here is a fun, English like, description of supported ops:
sa: load foaf-example-in-sw.sw
sa: list-to-words int-coeffs-to-word extract-value supported-ops "" |list>
|3 where-live, 2 lives-with, 4 email, 5 works-for, 1 wife, 1 knows-quite-well, 1 where-lives and 2 website>
Heh, fun!
Home
previous: new functions is greater than is greater equal than etc
next: this concludes phase 2
updated: 19/12/2016
by Garry Morrison
email: garry -at- semantic-db.org