Tag Archives: Other

Sharing and caring for Open Scotland⤴

from @ Sharing and learning

This month I will be curating for Open Scotland,  that is writing a blog post or two and tweeting a bit on the #OpenScot hashtag.  I’ve published the first blog post, Sharing curation in Open Scotland, and I am not going to reproduce the content here, so follow that link to read what I have to say about Dorothy Hodgkin, kindness in scientific research and how that relates to Open Scotland.

If you don’t know it,

Open Scotland is a voluntary cross sector initiative that aims to raise awareness of open education, encourage the sharing of open educational resources, and explore the potential of open policy and practice to benefit all sectors of Scottish education.

Open Scotland about page

The scope of Open Scotland includes

  • Open education practice
  • Open educational resources
  • Open policy
  • Open assessment practices
  • Open textbooks
  • Open source software
  • Open standards
  • Open online courses
  • MOOCs
  • Wikimedia projects

I have been (lightly) involved in Open Scotland one way or another since its inception with the Open Scotland Summit at the National Museum of Scotland in June 2013, subsequent creation of the Scottish Open Education Declaration. I’ve been increasingly aware that the effort for sustaining Open initiatives has fallen on too few people, and that’s as true of Open Scotland as it is for any other part of the open world, so when Lorna and Joe asked for volunteers to share the curation, I was happy to put my name down. If you feel similar please do likewise.

If you’ve read this far without reading the post I wrote, here’s the link again: Sharing curation in Open Scotland.

The post Sharing and caring for Open Scotland appeared first on Sharing and learning.

Resources and Objects: RDF and OOP talk about different things⤴

from @ Sharing and learning

Here’s a thing that I think has been at the root of some long discussions that I have been involved in where people involved in modelling data just don’t seem to agree on what goes in to a domain model, or on fine details of definitions. If it seems wrong or trivial to you, I’ld really appreciate any comments along the lines of ‘nope, you’ve misunderstood that …’ or ‘nope, everyone knows this and works around it, the disagreement must have been about something else’.

What I’m thinking causes these long discussions is that RDF and Object Oriented modeling methods (e.g. UML) talk about different things with the same terms. The resulting confusion is somewhat like a speaker of British English asking for something to be tabled in a meeting with folk from the US only to be mystified and offended when it is ignored

table transitive verb

1 a [US] to remove (something, such as a parliamentary motion) from consideration indefinitely
b British to place on the agenda

Merriam-Webster dictionary definition of table

RDF starts with resources, which are the things being described. Although identified with web identifiers (URIs, IRIs) they can be concrete objects, concepts, imaginary beings, in fact “anything that can be identified”. A relationship between a resource and something else can be asserted as being a property of the described resource. Resources of the same type can be grouped into classes so that a property can be associated with all instances of that type of resource. For example, in schema.org resources of type Person have a property name that is a string.In RDF terms I am a resource identified by <http://people.pjjk.net/phil#id> of type <http://schema.org/Person>. I am an instance of a <http://schema.org/Person>. Note that while I am identified by a URI you cannot retrieve me via that URI, instead you get sent a different resource with a different URI, that is a description of me.

Object Oriented methods start with objects, which are constructs that live only in information systems; the most important type of object in metadata contexts is a data object that is a description of something. Objects of the same type can be created through the definition of a class that defines the properties and methods of a type of object. While it is common practice to name object classes after the real-world thing that they represent, e.g. Person, when we create an object instance of such a class we do not create a person in the real world. The identifier for an object instance of type person is the identifier of the artifact in the computer.

So in RDF we have real things and write descriptions of them; in object oriented methods we have data things that we define. But we use terms like class, type, object, resource, instance when talking about both.

Context and shared understanding within communities is enough to avoid confusion between RDF and Object Oriented terms most of the time, but in JSON-LD they collide. In JSON-LD I can express the information about myself provided above as a description about me, or in terms of the W3C web architecture a representation of me.

{ "@context": {
        "sdo": "http://schema.org/"
    "@id": "http://pjjk.net/phil#id",
    "@type": "sdo:Person",
    "sdo:name": "Phil Barker",
    "sdo:url": "http://blogs.pjjk.net/phil/about/"

This translates to RDFXML as

<?xml version="1.0" encoding="UTF-8"?>
  <rdf:Description rdf:about="http://pjjk.net/phil#id">
    <rdf:type rdf:resource="http://schema.org/Person"/>
    <sdo:name>Phil Barker</sdo:name>

I could represent the UML class diagram for the JSON data object as something like: I could represent the UML class diagram for the JSON data object as something like:Note that @id and @type, which identify and provide a type for the JSON node, refer to objects in the real world for RDF.

Why does this matter? Well, it’s one thing to say that you like/don’t like me, it’s another to say that you like/don’t like a description of me. It’s one thing to make a copy of a description of me, another to make a copy of me.  We can make descriptions of things in RDF and make assertions about things in RDF, but if we say that a thing in our RDF model is a Description of Assertion, then we had better have a reason for wanting to be so meta as using RDF to make descriptions of Descriptions and assertions about Assertions. But when someone suggests that an RDF model should have PersonDescription in a oval in place of Person, maybe they really want a PersonDescription in box in a different type of entity relationship diagram.

The post Resources and Objects: RDF and OOP talk about different things appeared first on Sharing and learning.

Women in our time⤴

from @ Sharing and learning

A play list of programs about women from the BBC’s In Our Time radio programme.

I’m a big fan of In Our Time, the BBC radio programme where Melvyn Bragg discusses the history of ideas with academics. Some time back the BBC released the entire In Our Time back catalogue as episodes to download, via podcasts and the web. A while back I created a selection from the podcast feed for Roman History, presenting the episodes in more-or-less chronological order. Here’s a similar chronological selection of women who have been topics of In Our Time programmes. I’ve also edited together an rss file for a podcast feed if you would like this selection delivered direct to your listening device.

Discussions about individual women (natural or supernatural) are left-aligned; discussions of themes, movements or works by or concerning women are right aligned.


Lakshmi (लक्ष्मी) or Laxmi, is the Hindu goddess of wealth, fortune and prosperity. She is the wife and shakti (energy) of Vishnu, one of the principal deities of Hinduism and the Supreme Being in the Vaishnavism Tradition.

Marriage, also called matrimony or wedlock, is a socially or ritually recognised union between spouses that establishes rights and obligations between those spouses.

Antiquities (pre-5th century)

Hatshepsut (1507–1458 BC) was the fifth pharaoh of the Eighteenth Dynasty of Egypt and the second historically-confirmed female pharaoh.

Sappho (c. 630 – c. 570 BC) was an archaic Greek poet from the island of Lesbos. Sappho is known for her lyric poetry, written to be sung while accompanied by a lyre.

The Muses
In ancient Greek religion and mythology, the Muses are the inspirational goddesses of literature, science, and the arts. They are considered the source of the knowledge embodied in the poetry, lyric songs, and myths that were related orally for centuries in these ancient cultures.

The Amazons
In Greek mythology, the Amazons were a tribe of women warriors related to Scythians and Sarmatians.  They were brutal and aggressive, and their main concern in life was war.

The Delphic Oracle
The Pythia was the name of the high priestess of the Temple of Apollo at Delphi who also served as the oracle, commonly known as the Oracle of Delphi.

Mary Magdalene
Saint Mary Magdalene, sometimes called simply the Magdalene, was a Jewish woman who, according to the four canonical gospels, traveled with Jesus as one of his followers and was a witness to his crucifixion, burial, and resurrection.

Agrippina the Younger
Agrippina the Younger (6 November AD 15 – 23 March AD 59)  was a Roman empress and one of the more prominent women in the Julio-Claudian dynasty.

Boudica or Boudicca (also Boadicea or Boudicea, and known in Welsh as Buddug) was a queen of the British Celtic Iceni tribe who led an uprising against the occupying forces of the Roman Empire in AD 60 or 61, and died shortly after its failure, having supposedly poisoned herself.

Queen Zenobia
Septimia Zenobia (c. 240 – c. 274 AD) was a third century queen of the Palmyrene Empire in Syria. In 270, Zenobia launched an invasion which brought most of the Roman East under her sway and culminated with the annexation of Egypt

Getting medieval (5th–14th centuries)

St Hilda
Hilda of Whitby or Hild of Whitby (c. 614–680) is a Christian saint and the founding abbess of the monastery at Whitby, which was chosen as the venue for the Synod of Whitby.

Hildegard of Bingen
Hildegard of Bingen OSB (1098 – 17 September 1179) was a German Benedictine abbess, writer, composer, philosopher, Christian mystic, visionary, and polymath. She is considered to be the founder of scientific natural history in Germany.

Eleanor of Aquitaine
Eleanor of Aquitaine (1122 or 1124 – 1 April 1204) was queen consort of France (1137–1152) and England (1154–1189) and duchess of Aquitaine in her own right (1137–1204).

Renaissance Women (14th–17th centuries)

Christine de Pizan
Christine de Pizan (1364 – c. 1430) was an Italian and French author. She is best remembered for defending women in The Book of the City of Ladies and The Treasure of the City of Ladies.

Margery Kempe and English Mysticism
Margery Kempe (c. 1373 – after 1438) was an English Christian mystic, known for writing through dictation The Book of Margery Kempe, a work considered by some to be the first autobiography in the English language.

Judith beheading Holofernes
The account of the beheading of Holofernes by Judith is given in the deuterocanonical Book of Judith, and is the subject of many paintings and sculptures from the Renaissance and Baroque periods.

Mary, Queen of Scots
Mary, Queen of Scots (8 December 1542 – 8 February 1587), also known as Mary Stuart or Mary I of Scotland, reigned over Scotland from 14 December 1542 to 24 July 1567.

The Death of Elizabeth I
Elizabeth I (7 September 1533 – 24 March 1603) was Queen of England and Ireland from 17 November 1558 until her death on 24 March 1603. On her death James the VI of Scotland became king of England.

Pocahontas (born Matoaka, known as Amonute, c. 1596 – March 1617) was a Native American woman notable for her association with the colonial settlement at Jamestown, Virginia.

Aphra Behn
Aphra Behn (14 December 1640? – 16 April 1689) was an English playwright, poet, translator and fiction writer from the Restoration era. As one of the first English women to earn her living by her writing, she broke cultural barriers and served as a literary role model for later generations of women authors.

The Salem Witch Trials
The Salem witch trials were a series of hearings and prosecutions of people accused of witchcraft in colonial Massachusetts between February 1692 and May 1693. More than 200 people were accused, 19 of whom were found guilty and executed by hanging (14 women and five men).

18th and 19th centuries

Women and Enlightenment Science
The history of science during the Age of Enlightenment traces developments in science and technology during the Age of Reason, when Enlightenment ideas and ideals were being disseminated across Europe and North America.

Catherine the Great
Catherine II (2 May 1729 – 17 November 1796), also known as Catherine the Great (Екатери́на Вели́кая, Yekaterina Velikaya), born Princess Sophie of Anhalt-Zerbst, was Empress of Russia from 1762 until 1796.

Marie Antoinette
Marie Antoinette  (French, 2 November 1755 – 16 October 1793) was the last Queen of France before the French Revolution. She was born an Archduchess of Austria and was the penultimate child and youngest daughter of Empress Maria Theresa and Francis I, Holy Roman Emperor.

Mary Wollstonecraft
Mary Wollstonecraft (27 April 1759 – 10 September 1797) was an English writer, philosopher, and advocate of women’s rights. Wollstonecraft is regarded as one of the founding feminist philosophers.

The Bluestockings
The Blue Stockings Society was an informal women’s social and educational movement in England in the mid-18th century. The society emphasized education and mutual co-operation.

Germaine de Stael
Anne Louise Germaine de Staël-Holstein (22 April 1766 – 14 July 1817), commonly known as Madame de Staël, was a French woman of letters and historian of Genevan origin whose lifetime overlapped with the events of the French Revolution and the Napoleonic era.

Fanny Burney
Frances Burney (13 June 1752 – 6 January 1840), also known as Fanny Burney and after her marriage as Madame d’Arblay, was an English satirical novelist, diarist and playwright.

Emma, by Jane Austen, published December 1815, is a novel about youthful hubris and the perils of misconstrued romance.

Wuthering Heights
Wuthering Heights, Emily Brontë’s only novel, was written between October 1845 and June 1846 and published in 1847 under the pseudonym “Ellis Bell”. It was controversial because of its unusually stark depiction of mental and physical cruelty, and it challenged strict Victorian ideals regarding religious hypocrisy, morality, social classes and gender inequality.

Jane Eyre
Jane Eyre (originally published as Jane Eyre: An Autobiography on 16 October 1847) is a novel by English writer Charlotte Brontë. Arguably a Bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall.

Ada Lovelace
Augusta Ada King, Countess of Lovelace (née Byron; 10 December 1815 – 27 November 1852) was an English mathematician and writer, chiefly known for her work on Charles Babbage’s proposed mechanical general-purpose computer, the Analytical Engine.

Harriet Martineau
Harriet Martineau (/ˈmɑːrtənˌoʊ/; 12 June 1802 – 27 June 1876) was a British social theorist and Whig writer, often cited as the first female sociologist.

North and South
North and South is a social novel published in 1855 by English writer Elizabeth Gaskell.  It uses a protagonist from southern England to present and comment on the perspectives of mill owners and workers in an industrialising city.

Aurora Leigh
Aurora Leigh (1856) is an epic novel/poem by Elizabeth Barrett Browning. The poem is written in blank verse and is a first person narration, from the point of view of Aurora; its other heroine, Marian Erle, is an abused self-taught child of itinerant parents.

Madame Bovary
Madame Bovary (full French title: Madame Bovary. Mœurs de province) is a novel by Gustave Flaubert, published in 1856. The eponymous character lives beyond her means in order to escape the banalities and emptiness of provincial life.

Middlemarch, A Study of Provincial Life is a novel by the English author George Eliot (Mary Anne Evans), first published in eight instalments (volumes) in 1871–72. The novel is set in the fictitious Midlands town of Middlemarch during 1829–32. Issues include the status of women, the nature of marriage, idealism, self-interest, religion, hypocrisy, political reform, and education

Emily Dickinson
Emily Elizabeth Dickinson (December 10, 1830 – May 15, 1886) was an American poet.

Christina Rossetti
Christina Georgina Rossetti (5 December 1830 – 29 December 1894) was an English poet who wrote a variety of romantic, devotional, and children’s poems.

Octavia Hill
Octavia Hill (3 December 1838 – 13 August 1912) was an English social reformer, whose main concern was the welfare of the inhabitants of cities, especially London, in the second half of the nineteenth century.

Annie Besant
Annie Besant, née Wood (1 October 1847 – 20 September 1933), was a British socialist, theosophist, women’s rights activist, writer, orator, and supporter of both Irish and Indian self-rule.

20th Century Women

The political movement in the late 19th and early 20th centuries that was fighting for the women’s right to vote in Great Britain and the United States.

The Curies
Marie Skłodowska Curie (7 November 1867 – 4 July 1934) was a Polish and naturalized-French double Nobel prize winning physicist and chemist. Her daughter Irène Joliot-Curie (12 September 1897 – 17 March 1956) was awarded the Nobel Prize in Chemistry in 1935 for the discovery of artificial radioactivity.

Rosa Luxemburg
Rosa Luxemburg (5 March 1871 – 15 January 1919) was a Polish Marxist theorist, philosopher, economist, anti-war activist and revolutionary socialist who became a naturalized German citizen at the age of 28.

Edith Wharton
Edith Wharton (January 24, 1862 – August 11, 1937) was an American novelist, short story writer, playwright, and designer. Wharton drew upon her insider’s knowledge of the upper class New York “aristocracy” to realistically portray the lives and morals of the Gilded Age.

Mrs Dalloway
Mrs Dalloway (published on 14 May 1925) is a novel by Virginia Woolf that details a day in the life of Clarissa Dalloway, a fictional high-society woman in post–First World War England.

Emmy Noether
Amalie Emmy Noether (23 March 1882 – 14 April 1935) was a German mathematician who made important contributions to abstract algebra and theoretical physics.

Anna Akhmatova
Anna Andreyevna Gorenko (23 June 1889 – 5 March 1966), better known by the pen name Anna Akhmatova, was one of the most significant Russian poets of the 20th century. She was shortlisted for the Nobel Prize in 1965 and received second-most (three) nominations for the award the following year.

Simone Weil
Simone Adolphine Weil (3 February 1909 – 24 August 1943) was a French philosopher, mystic, and political activist.

Rosalind Franklin
Rosalind Elsie Franklin (25 July 1920 – 16 April 1958) was an English chemist and X-ray crystallographer who made contributions to the understanding of the molecular structures of DNA (deoxyribonucleic acid), RNA (ribonucleic acid), viruses, coal, and graphite.

Hannah Arendt
Johanna “Hannah” Cohn Arendt (Hannah Arendt Bluecher; 14 October 1906 – 4 December 1975) was a German philosopher and political theorist. Her many books and articles on topics ranging from totalitarianism to epistemology have had a lasting influence on political theory.

Simone de Beauvoir
Simone Lucie Ernestine Marie Bertrand de Beauvoir (9 January 1908 – 14 April 1986) was a French writer, intellectual, existentialist philosopher, political activist, feminist and social theorist.

Frida Kahlo
Frida Kahlo de Rivera (6 July 1907 – 13 July 1954) was a Mexican artist whose works were inspired by the nature and artifacts of Mexico. She employed a naïve folk art style to explore questions of identity, postcolonialism, gender, class and race in Mexican society.

Feminism is a range of political movements, ideologies, and social movements that share a common goal: to define, establish, and achieve political, economic, personal, and social equality of sexes.


In creating this list I notice that:

The coverage of women in the series seems to have improved over time.

The geographic / cultural breakdown of the 36 individuals covered is rather Eurocentric:

  • African: 1 (Hatshepsut; who arguably predates Africa as a cultural identity)
  • Native American: 1 (Pocohontas)
  • Latin American: 1 (Frida Kahlo)
  • Asian: 3 (Lakshmi, Zenobia and Mary Magdalen; again, arguable about whether all these would have identified as Asian)
  • US: 2 (Emily Dickinson & Edith Warton) + 2 who moved there (Hannah Arendt & Emmy Noether).
  • European: 29
    • of whom: 15 were British

(This is my lame excuse for the Eurocentric headings by which I have divided the time line above.)

The field of endeavour of the Women covered breaks down as

  • Literature & Art 8
  • Social reform 10
  • Science 4
  • Religion & Philosophy  6
  • Rulers 8

(though if you want to object that someone being an author or a philosopher doesn’t preclude her from being a social reformer then I wouldn’t disagree)


The recordings I’m linking to are (c) BBC. The text used in the descriptions comes from the  Wikipedia and licensed CC:BY-SA. My own contribution in making this list I license as CC:0

The post Women in our time appeared first on Sharing and learning.

Cycle route planning for Garmin eTrex Vista on Ubuntu 18.04⤴

from @ Sharing and learning

Obviously, this is a summer holidays post, not work related. One of my long-term popular posts on this blog is about Using Garmin eTrex Vista HCx with Ubuntu 14.04LTS & QLandkarte GT. That post has the info about how my eTrex is set up to connect to Ubuntu and to use OpenCycleMap, which still works for me. This post is just about the route planning, which has moved on. In short I use Google Maps in cycle mode plot the route, mapsToGPX.com to download a GPX of that route, gps babel to simplify and transfer the GPX file to the eTrex, and QMapShack to view and manage the various GPX files on Ubuntu. For navigation en route I follow a planned track on eTrex and/or on my phone using OSMAnd.

I tend to do my route planning for bike rides on Google Maps. I’ve tried lots of others, including the following a route using the Garmin eTrex or phone/OSMAnd as satnav, and routing on QMapShack, on Cycle Streets and Bing Maps; they all have their strengths, but Google wins because of two features. First, it’s dead easy to change the route by adding and dragging an intermediary way point; second street view and the aerial photos let me check out the type of road/track that it’s sending me on. There are still one or two stretches of cycle routes that it won’t add to routes, but another factor when compared to some other routing services is that it won’t send me on a detour over a rough path instead of a short distance on a medium busy road.

Once I have the route I want, I use mapsToGPX.com to convert it into a gpx files of the track point and route points that I download. For the route points I use the advanced options to get next turn info and turn directions. There may be other options, I haven’t looked because this does the job nice and simple (it’s nice to leave a donation if you think so too).

The only problem with the route points gpx file is that is has way too many  points for the Garmin. gpsbabel has a great option that will simplify by removing any points that are within a set distance of the line drawn between its neighbours. So if you’re happy with the line being up to 100m from the actual route point (which I find works fine) you can use

$ gpsbabel -i gpx -f track.gpx -x simplify,crosstrack,error=0.1k -o gpx -F track_s.gpx

That done I use QMapShack with the OpenCycleMap map to view and manipulate the route and track gpx files. I check that the route isn’t missing any obvious cycle routes. Google Maps is good enough at using cycle routes, but doesn’t display them particularly well, so they’re easy to miss. Actually editing the track or route on QMapShack is a bit of a pain, but it’s really quite quick to edit on Google Maps and re-download. I sometimes create waypoints in QMapShack with the name of the route point turn instructions. I put the route the track and the waypoints into a single project, (and if I am planning a multi-day tour I put all days into a single project) and save as a single GPX.

Three cycle rides in QMapShack as routes and tracks, one highlighted with waypoints.

I haven’t been able to get QMapShack to talk to eTrex, so I use gpsbabel to transfer the files:

$ gpsbabel [-t|r] -i gpx -f filename.gpx -o garmin -F usb:

Using -t at the front transfers track, -r transfers routes, using neither transfers the waypoints. See the docs for more options.

To transfer to my phone I just plug my phone into the USB and mount it for file transfer copy the file over and choose to display the GPX file from the Configure Maps option.

When riding, I just follow the track on the GPS device (phone or eTrex) with the waypoints giving me text hints (I would love to know if there is an easy way of setting proximity alarms for way points in bulk on the eTrex, to give alerts when a turn is coming). Having the route to display can be useful at times, but I have found that both devices tend to send me on unwanted detours and down unsuitable paths if I allow them to use the route for navigation. On the phone with OSMAnd, using a track for navigation works better, but there is a problem with the battery life on longer rides.


The post Cycle route planning for Garmin eTrex Vista on Ubuntu 18.04 appeared first on Sharing and learning.

PressBooks and ePub as an OER format.⤴

from @ Sharing and learning

PressBooks does a reasonable job of importing ePub, so that ePub can be used as a portable format for open text books. But, of course, there are limits.

I have been really impressed with PressBooks, the extension to WordPress for authoring eBooks. Like WordPress it is available as a hosted service from PressBooks.com and to host yourself from PressBooks.org. I have been using the latter for a few months. It looks like a great way of authoring, hosting, using, and distributing open books. Reports like this from Steel Wagstaff about Publishing Open Textbooks at UW-Madison really show the possibilities for education that open up if you do that. There you can read what work Steel and others have been doing around PressBooks for authoring open textbooks, with interaction (using hypothe.is, and h5p), connections to their VLE (LTI), and responsible learning analytics (xAPI).

PressBooks also supports replication of content from one PressBook install to another, which is great, but what is even greater is support of import from other content creation systems. We’re not wanting monoculture here.

Open text books are, of course, a type of Open Educational Resource, and so when thinking about PressBooks as a platform for open text books you’re also thinking about PressBooks and OER. So what aspects of text-books-as-OER does PressBooks support? What aspects should it support?

OER: DERPable, 5Rs & ALMS

Frameworks for thinking about requirements for openness in educational resources go back to the very start of the OER movement. Back in the early 2000s, when JISC was thinking about repositories and Learning Objects as ways of sharing educational resources, Charles Duncan used to talk about the need for resources to be DERPable: Discoverable, Editable, Repurposable and Portable. At about the same time in the US, David Wiley was defining Open Content in terms of four, later five Rs and ALMS. The five Rs are well known: the permissions to Retain, Reuse, Revise, Remix and Redistribute. ALMS is a less memorable, more tortured acronym, relating to technical choices that affect openness in practice. The choices relate to: Access to editing tools, the Level of expertise required to use these tools, the content being Meaningfully editable, and being Self-sourced (i.e. there not being separate source and distribution files).

Portability of ePub and editing in PressBooks

I tend to approach these terms back to front: I am interested in portable formats for disseminating resources, and systems that allow these to be edited. For eBooks / open textbooks my format of choice for portability is currently ePub, which is essentially HTML and other assets (images, stylesheets, etc.) with metadata, in a zip archive. Being HTML-based, ePub is largely self-sourced, and can be edited with suitable tools (though there may be caveats around some of the other assets such as images and diagrams). Furthermore, WordPress in general and PressBooks specifically makes editing, repurposing and distributing easy without requiring knowledge of HTML. It’s a good platform for remixing, revising, reusing, retaining content. And the key to this whole ramble of a blog post is the ‘import from ePub‘ feature.

So how does  the combination of ePub and PressBooks work in practice. I can go to OpenStax, and download one of their text books as ePub. As far as I can see the best-known open textbook project doesn’t seem to make ePub available (Apple’s iPub is similar, but I don’t do iBooks so couldn’t download one). So I went to Siyavula and downloaded one of their CC:BY textbooks as an ePub. Chose that download for import into PressBooks and got a screen that lets me choose which parts of the ePub to import and what type of content to import it as.

List of sections of the ePub with tick box for whether to import in PressBooks, and radio button options for what type of book part to import as

After choosing which parts to import and hitting the import button at the bottom of the page, the content is there to edit and republish in PressBooks.

From here you can edit or add content (including by import from other sources), rearrange the content, and set options for publishing it. There is other work to be done. You will need to choose a decent theme to display your book with style. You will also need to make sure internal links work as your PressBooks permalink URL scheme might not match the URLs embedded in the content. How easy this is will vary depending on choices made when the book was created and your own knowledge of some of the WordPress tools that can be used to make bulk edits.

I am not really interested in distributing maths text books, so I won’t link to the end result of this specific example. I did once write a book in a book sprint with some colleagues, and that was published as an ePub. So here an imported & republished version of Into The Wild (PressBook edition).  I didn’t do much polishing of this: it uses a stock theme, and I haven’t fixed internal links, e.g. footnotes.


Of course there are limits to this approach. I do not expect that much (if any) of the really interesting interactive content would survive a trip through ePub. Also much of Steel’s work that I described up at the top is PressBook platform specific. So that’s where cloning from PressBooks to PressBooks becomes useful. But ePub remains a viable way of getting textbook content into the PressBooks platform.

Also, while WordPress in general, and hence PressBooks, is a great way of distributing content, I haven’t looked much at whether metadata from the ePub is imported. On first sight none of it is, so there is work to do here in order to make the imported books discoverable. That applies to the package level metadata in ePubs, which is a separate file from the content. However, what also really interests me is the possibility of embedding education-specific schema.org metadata into the HTML content in such a way that it becomes transportable (easy, I think) and editable on import (harder).

The post PressBooks and ePub as an OER format. appeared first on Sharing and learning.

Quick update on W3C Community Group on Educational and Occupational Credentials⤴

from @ Sharing and learning

The work with the W3C Community Group on educational and occupational credentials in schema.org is going well. There was a Credential Engine working group call last week where I summarised progress so far. The group has 24 members. We have around 30 outline use cases, and have some idea of the relative importance of these. The use cases fall under four categories: search, refinements of searches, secondary searches (having found a credential, want find some other thing associated with it), and non-search use cases. From each use case we have derived one or two requirements for describing credentials in schema.org. We made a good start at working through these requirements.

I think the higher-level issues for the group are as follows. First, How do model the aspect of educational and occupational credentials? Where does it fit in to the  schema.org hierarchy, and how does it relate to other work around verifying a claim to hold a credential? Second, the relationship between a vocabulary like schema.org which aims for a wide uptake by many disconnected providers of data, not limited to a specialist domain or a partnership who are working closely together and can build a single tightly defined understanding of what they are describing. Thirdly, and somewhat related to the previous point, what balance do we strike between pragmatism and semantic purity.  We need to be pragmatic in order to build something that is acceptable to the rest of the schema.org community: not adding too many terms, not being too complex (one of the key factors in schema.org’s success has been  the tendency to favour approaches which make it easier to provide data).

The post Quick update on W3C Community Group on Educational and Occupational Credentials appeared first on Sharing and learning.

Getting data from wikidata into WordPress custom taxonomy⤴

from @ Sharing and learning

I created a custom taxonomy to use as an index of people mentioned. I wanted it to work nicely as linked data, and so wanted each term in it to refer to the wikidata identifier for the person mentioned. Then I thought, why not get the data for the terms from wikidata?

Brief details

Lots of tutorials on how to set up a custom taxonomy with with custom metadata fields. I worked from this one from smashingmagazine, to get a taxonomy call people, with a custom field for the wikidata id.

Once the wikidata is entered, this code will fetch & parse the data (it’s a work in progress as I add more fields)

function omni_get_wikidata($wd_id) {
    print('getting wikidata<br />');
    if ('' !== trim( $wd_id) ) {
	    $wd_api_uri = 'https://wikidata.org/entity/'.$wd_id.'.json';
    	$json = file_get_contents( $wd_api_uri );
    	$obj = json_decode($json);
    	return $obj;
    } else {
    	return false;

function get_wikidata_value($claim, $datatype) {
	if ( isset( $claim->mainsnak->datavalue->value->$datatype ) ) {
		return $claim->mainsnak->datavalue->value->$datatype;
	} else {
		return false;

function omni_get_people_wikidata($term) {
	$term_id = $term->term_id;
    $wd_id = get_term_meta( $term_id, 'wd_id', true );
   	$args = array();
   	$wikidata = omni_get_wikidata($wd_id);
   	if ( $wikidata ) {
    	$wd_name = $wikidata->entities->$wd_id->labels->en->value;
    	$wd_description = $wikidata->entities->$wd_id->descriptions->en->value;
    	$claims = $wikidata->entities->$wd_id->claims;
   		$type = get_wikidata_value($claims->P31[0], 'id');
   		if ( 'Q5' === $type ) {
			if ( isset ($claims->P569[0] ) ) {
				$wd_birth_date = get_wikidata_value($claims->P569[0], 'time');
				print( $wd_birth_date.'<br/>' );
   		} else {
	   		echo(' Warning: that wikidata is not for a human, check the ID. ');
	   		echo(' <br /> ');
    	$args['description'] = $wd_description;
    	$args['name'] = $wd_name;
		print_r( $args );print('<br />');
    	update_term_meta( $term_id, 'wd_name', $wd_name );
    	update_term_meta( $term_id, 'wd_description', $wd_description );
    	wp_update_term( $term_id, 'people', $args );
   	} else {
   		echo(' Warning: no wikidata for you, check the Wikidata ID. ');
add_action( 'people_pre_edit_form', 'omni_get_people_wikidata' );

(Note: don’t add this to edited_people hook unless you want along wait while causes itself to be called every time it is called…)

That on its own wasn’t enough. While the name and description of the term were being updated, the values for them displayed in the edit form weren’t updated until the page was refreshed. (Figuring out that it was mostly working took a while.) A bit of javascript inserted into the edit form fixed this:

function omni_taxonomies_edit_fields( $term, $taxonomy ) {
    $wd_id = get_term_meta( $term->term_id, 'wd_id', true );
    $wd_name = get_term_meta( $term->term_id, 'wd_name', true ); 
    $wd_description = get_term_meta( $term->term_id, 'wd_description', true ); 
//JavaScript required so that name and description fields are updated 
	  var f = document.getElementById("edittag");
	  var n = document.getElementById("name");
  	  var d = document.getElementById("description");
  	  function updateFields() {
  		n.value = "<?php echo($wd_name) ?>";
  		d.innerHTML = "<?php echo($wd_description) ?>";

    <tr class="form-field term-group-wrap">
        <th scope="row">
            <label for="wd_id"><?php _e( 'Wikidata ID', 'omniana' ); ?></label>
            <input type="text" id="wd_id"  name="wd_id" value="<?php echo $wd_id; ?>" />
add_action( 'people_edit_form_fields', 'omni_taxonomies_edit_fields', 10, 2 );


The post Getting data from wikidata into WordPress custom taxonomy appeared first on Sharing and learning.

TIL: getting Skype for Linux working⤴

from @ Sharing and learning

Microsoft’s Skype for Linux is a pain for Linux (well, for Ubuntu at least). It stopped working for me, no one could hear me.

Apparently it needs pulse audio to  work properly, but as others have found “most problems with the sound in Linux can be solved by removing PulseAudio”. The answer, as outlined in this post, is apulse “PulseAudio emulation for ALSA”.

The post TIL: getting Skype for Linux working appeared first on Sharing and learning.

Wikidata driven timeline⤴

from @ Sharing and learning

I have been to a couple of wikidata workshops recently, both involving Ewan McAndrew; between which I read Christine de Pizan‘s Book of the City of Ladies(*). Christine de Pizan is described as one of the first women in Europe to earn her living as a writer, which made me wonder what other female writers were around at that time (e.g. Julian of Norwich and, err…). So, at the second of these workshops, I took advantage of Ewan’s expertise, and the additional bonus of Navino Evans cofounder of Histropedia  also being there, to create a timeline of medieval European female writers.  (By the way, it’s interesting to compare this to Asian female writers–I was interested in Christina de Pizan and wanted to see how she fitted in with others who might have influenced her or attitudes to her, and so didn’t think that Chinese and Japanese writers fitted into the same timeline.)

Histropedia timeline of medieval female authors (click on image to go to interactive version)

This generated from a SPARQL query:

#Timeline of medieval european female writers
SELECT ?person ?personLabel ?birth_date ?death_date ?country (SAMPLE(?image) AS ?image) WHERE {
  ?person wdt:P106 wd:Q36180; # find everything that is a writer
          wdt:P21 wd:Q6581072. # ...and a human female
  OPTIONAL{?person wdt:P2031 ?birth_date} # use florit if present for birth/death dates  
  OPTIONAL{?person wdt:P2032 ?death_date} # as some v impecise dates give odd results 
  ?person wdt:P570 ?death_date. # get their date of death
  OPTIONAL{?person wdt:P569 ?birth_date} # get their birth date if it is there
  ?person wdt:P27 ?country.   # get there country
  ?country wdt:P30  wd:Q46.   # we want country to be part of Europe
  FILTER (year(?death_date) < 1500) FILTER (year(?death_date) > 600)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  OPTIONAL { ?person wdt:P18 ?image. }
GROUP BY ?person ?personLabel ?birth_date ?death_date ?country
Limit 100

[run it on wikidata query service]


I’m still trying to get my head around SPARQL, Ewan and Nav helped a lot, but I wouldn’t want to pass this off as exemplary SPARQL. In particular, I have no idea how to optimise SPARQL queries, and the way I get birth_date and death_date to be the start and end of when the writer flourished, if that data is there, seems a bit fragile.

It was necessary to to use florit dates because some of the imprecise birth & death dates lead to very odd timeline displays: born C12th . died C13th showed as being alive for 200 years.

There were other oddities in the wikidata. When I first tried, Julian of Norwich didn’t appear because she was a citizen of the Kingdom of England, which wasn’t listed as a country in Europe. Occitania, on the other hand was.  That was fixed. More difficult was a writer from Basra who was showing up because Basra was in the Umayyad Caliphate, which included Spain and so was classed as a European country. Deciding what we mean by European has never been easy.

Given the complexities of the data being represented, it’s no surprise that the Wikidata data model isn’t simple. In particular I found that dealing with qualifiers for properties was mind bending (especially with another query I tried to write).

Combining my novice level of SPARQL and the complexity of the Wikidata data model, I could definitely see the need for SPARQL tutorials that go beyond the simple “here’s how you find triple that matches a pattern” level.

Finally: histropedia is pretty cool.


The Book of the City of Ladies is a kind of women in red for Medieval Europe.  Rosalind Brown-Grant’s translation for Penguin Classics is very readable.

The post Wikidata driven timeline appeared first on Sharing and learning.