Piggydb Documents

Piggydb is an open source Web note-taking application that provides you with a platform to build your knowledge personally or collaboratively.
With Piggydb, you can create highly structured content by connecting knowledge fragments to each other to build a network structure, which is more flexible and expressive than a tree structure. Fragments can also be classified using hierarchical tags.
Piggydb does not aim to be an input-and-search database application. It aims to be a platform that encourages you to organize your knowledge continuously to discover new ideas or concepts, and moreover enrich your creativity.


"Piggydb is a great way to organize everything everything I thought I knew. I've tried everything from wikis to piles of text files. Either the extra features get in the way, or content is difficult to find. Piggydb is the perfect balance between simplicity and power. I love it for everything from organizing papers for research projects to keeping track of which markets have the nicest produce." - Michael Mior

"if I learn, say, about 'A' today, tomorrow about 'B' and then learning about 'C' changes my perspective on the nature of 'A' or its relation to 'B' - re-classification will be needed. so while I can describe my knowledge today, tomorrow may be different; furthermore, relations may of course be conditional, with all that implies for management and structure. I really see piggydb as a tool primarily useful in the early stages of knowledge acquisition"

"Great, neat piece of software that matches exactly my needs in anything to do with knowledge management; power and simplicity in the same package. Thank you very much for the time invested." - Review at SourceForge.net

Piggydb est une application Web de base de connaissance (knowledge management), simple d’installation et d’utilisation. Son intérêt principal vient de son approche radicalement différente des autres solutios du marché. En effet, cette application conçoit la connaissance non plus sous la forme d’articles mais sous la forme d’éléments indépendants que l’on peut regrouper, lier, plier, déplier, agréger ou mettre en arborescence selon les cas. Une autocomplétion et une exploration dynamique des arborescences rendent son utilisation très intuitive à tel point que lire une documentation n’est pas nécessaire pour apprécier cette application dans son utilisation basique ! - Jimmy Goffaux

"Piggydb is designed to maximize your creativity and help you connect the dots between your ideas. More flexible than a standard database and easier to use than a Wiki, Piggydb gives users the help they need to create truly comprehensive knowledge listings around a particular topic.
Piggydb makes it much easier to look at a chunk of information and organize it from a fresh perspective based on any number of variables and schemes. Your imagination is the limit.
The personal version is completely self-contained and does not require any kind of web server software. It’s as simple as downloading and installing the software and launching the server. Your default browser will automatically load the Piggydb system." - fiberdownload.com

How Piggydb Works

1. Create knowledge fragments for anything you want to write down: your thoughts, ideas, article excerpts, TODOs, etc.
2. Organize the fragments afterward
with fragment relationships:
with tags:
3. Browse your knowledge base in the various views:


Getting Started → ...

To run Piggydb, you need to have Java Runtime Environment.


You can customize the Piggydb's behavior by modifying the settings. The following is how to change the settings for each package.
Those settings also can be set via the Java System Properties.

Database Location

If you use a Standalone Package or All-in-One Package, the database files will be created in ~/piggydb/ (Windows: C:\Documents and Settings\<User>\piggydb), and the database name is "piggydb" by default.
The location of the database files or the database name can be changed via the Piggydb settings "piggydb.database.prefix" and "piggydb.database.name", respectively.
If you use a War Package, the database files will be created in ~/piggydb/ and the database name will be determined by the context path, which is basically a war name. If you deploy a war file named "myknowledge.war", then the database name will be "myknowledge". If the context path is null, then the database name will be "piggydb". This auto war-database mapping allows you to deploy multiple piggydb.wars with separate databases on the same JEE server more easily (NOTE: This feature is available only with servlet 2.5 (tomcat 6.x) or later, otherwise the database name will be "piggydb").

Anonymous Access

Piggydb allows only authenticated (logged in) users to view, edit content by default. But the anonymous access feature has been available since version 4.4. You can enable anonymous access to let users view content without a login (anonymous users can only view content, but not register, edit or delete knowledge fragments).
To enable anonymous access, change the Piggydb settings "piggydb.enableAnonymous" value to "true".
If you use a War Package, you can download an anonymous-enabled package from here: http://sourceforge.net/projects/piggydb/files/ (file name: piggydb-<version>-anonymous.war).


  • piggydb.enableClientAddressAuth
    • If this value is true, Piggydb invalidates the current session if the client IP address is not the same as the logged-in address.
  • piggydb.enableUserAgentAuth
    • If this value is true, Piggydb invalidates the current session if the client user-agent is not the same as the logged-in agent.


  • piggydb.entity.changeableOnlyForCreator
    • If this value is true, a fragment can be modified only by its creator/author

Knowledge Fragments

A knowledge fragment is the unit of information in a Piggydb database. The box which contains the text you are reading now is a fragment. The content of a fragment is usually text like this fragment (Text Fragment), but you can also input a file of arbitrary type as a single fragment which is called a "File Fragment".
I recommend that you keep individual fragments relatively small. Smaller fragments, which focus on single issues, give you more flexibility when you organize and relate them using the tags.
Piggydb provides you with various ways to view organized fragments. This is one of its advantages when compared to other systems, such as wikis or blogs.

Text Fragments → ...

A text fragment is a fragment whose content is composed of text, and it is a primary component to compose your knowledge in a Piggydb database. The content can be formatted using a wiki-like markup syntax, as shown:
(Clicking the help button [?] shows the Wiki Markup Help.)
Piggydb puts the focus on the logical structure of knowledge rather than presenting information in a visually impressive way. So Piggydb provides just a minimal set of tools for simple formatting such as basic font decorations, lists, quotes, tables, etc. It does not provide a sectional level of text formatting because in Piggydb this is realized not in the content of a fragment, but with relationships among fragments and tags.

File Fragments

A file fragment is a fragment whose content is a single file, of any type. Piggydb allows you to supply files as knowledge fragments because you can then organize them exactly like text fragments, using tags and establishing relationships.
A file fragment differs from a text fragment in the way its content is treated. At present, the content of a file can not be the target for keyword searches and it will not be displayed, unless it is an image file.
Because of these differences, file fragments, currently, are most useful when embedded in text fragments (to visually enhance them) or to collect supporting and reference documents.

Fragment Relationships → ...

Simple, unconnected knowledge fragments can be used as a personal journal or a diary, aided by the calendar interface, and you can use the full-text search facility to find and retrieve the information. However, as you connect ('relate') knowledge fragments to one another, the knowledge in your database becomes more useful and valuable.
Structurally the relationships between fragments resemble a network; this is less limiting than other types of relationship such as the tree structure, where each node can only have one parent. Piggydb allows relationships between fragments to be as complex as you need.
A well-built network of related fragments can be navigated easily using the Tree View, and arbitrary parts can be viewed using the Document View which renders in a "printer-friendly" format.

Home Fragment

In the older versions, fragments with a #home tag will be shown at the home page. However, this feature has some disadvantages. For example, you can’t put a tag-fragment without the side-effect where the tag-fragment will inherit #home’s feature unexpectedly, which means the fragments tagged with the tag-fragment will also be shown on the home page. Also you can’t control the order of the fragments at the home page with #home. So the old #home tag has been replaced with Home Fragment whose child-fragments will be shown at the home page with the order maintained.

Hierarchical Tags

Like many other Web 2.0 systems, Piggydb supports tagging to classify knowledge fragments.
While tagging is simply for classifying a piece of information and allowing it to be found again by browsing or searching, in the context of folksonomy, its simplicity (non-hierarchical keywords) enables organizing information by many people collaboratively, known as “collective intelligence”, and connecting like-minded people.
Piggydb is not a social networking application, so it concentrates on the classifying nature of tagging. In terms of classifying, tagging has many advantages over existing systems such as directories/folders and categories. Tagging is generally more flexible and less brain-racking, and is used to resolve the “Bat problem”.
The ‘Bat problem’ was coined by Japanese economist Yukio Noguchi to describe a problem which arises when classifying information and goods. Material things and information can have multiple attributes that are used descriptively depending on the context (Bats have the properties of both birds and beasts – http://mythfolklore.net/aesopica/milowinter/43.htm).
However, tagging also has its own problems. One of them is losing the grasp of the entire set of tags when the number of tags is growing. Piggydb offers hierarchical tagging to tackle this problem.
Hierarchical tagging allows you to classify a tag through other tags, exactly like knowledge fragments, and the classification is transitive; that is, if there is a tag “cat” classified with a tag “animal” and you classify some fragments with “cat”, then those fragment will be classified as an “animal” also. The hierarchical tagging feature allows you to classify fragments more naturally, and drill down a large number of fragments more easily and smoothly.

Special Tags → ...

Special tags are tags that have special effects when they are attached to knowledge fragments. In order to distinguish from other normal tags, the name of the special tags start with '#'. For example, if you attach a #bookmark tag to a fragment, then the fragment will be added to the bookmark list on the sidebar.

User Management - #user tag

The user management system is built into the piggydb's semantics seamlessly.
Piggydb has only one user ("owner") by default, but you can create other users just by creating fragments titled "username" and tagged with "#user" tag. These fragments are called "User Fragment", which can be created, changed, or deleted only by an owner.

Anonymous Access

Piggydb allows only authenticated (logged in) users to view, edit content by default. But the anonymous access feature has been available since version 4.4. You can enable anonymous access to let users view content without a login (anonymous users can only view content, but not register, edit or delete knowledge fragments).
To enable anonymous access, change the Piggydb settings "piggydb.enableAnonymous" value to "true".
If you use a War Package, you can download an anonymous-enabled package from here: http://sourceforge.net/projects/piggydb/files/ (file name: piggydb-<version>-anonymous.war).


You can contribute to the development of Piggydb by sending feedback, bug reports and feature requests via:

Put the focus on the process of organizing information

There are already many web services and applications that support tagging and other mechanisms for organizing information, such as 'Wikipedia', 'delicious', 'Facebook', 'Twitter', and so on -- collectively known as Web 2.0.
These applications and services allow you to connect with other, like-minded people, and to discover new information about your interests. It is a fantastic environment, thanks to the Internet.
However, in a Web 2.0 environment, most of the available information has been organized and classified already, and while this is very useful and convenient when you begin to use a given application or service, it will limit your ability to create new views or make new connections. You may not be able to implement or express your own ideas because you become so influenced by the majority, so constrained by the given softwares.
I believe the process of organizing information is more important than the result and I created 'Piggydb' to help you to be able to organize available information in a more flexible and expressive way than other Web 2.0 applications.

Wiki, Mind maps, Concept maps and Piggydb