Archive for the ‘PHP’ Category

PHPTMAPI – Documentation Complete

Saturday, August 9th, 2014

Johannes Schmidt tweeted today to announce PHPTMAPI “…is now fully documented.”

In case you are unfamiliar with PHPTMAPI:

PHPTMAPI is a PHP5 API for creating and manipulating topic maps, based on the project. This API enables PHP developers an easy and standardized implementation of ISO/IEC 13250 Topic Maps in their applications.

What is TMAPI?

TMAPI is a programming interface for accessing and manipulating data held in a topic map. The TMAPI specification defines a set of core interfaces which must be implemented by a compliant application as well as (eventually) a set of additional interfaces which may be implemented by a compliant application or which may be built upon the core interfaces.

Thanks Johannes!


Sunday, July 27th, 2014

PHPTMAPI 3 by Johannes Schmidt.

From the webpage:

PHPTMAPI 3 is the succession project of

PHPTMAPI is a PHP5 API for creating and manipulating topic maps, based on the project. This API enables PHP developers an easy and standardized implementation of ISO/IEC 13250 Topic Maps in their applications.

What is TMAPI?

TMAPI is a programming interface for accessing and manipulating data held in a topic map. The TMAPI specification defines a set of core interfaces which must be implemented by a compliant application as well as (eventually) a set of additional interfaces which may be implemented by a compliant application or which may be built upon the core interfaces.

Please spread the word to our PHP brethren.

Kindred Britain

Monday, August 26th, 2013

Kindred Britian by Nicholas Jenkins, Elijah Meeks and Scott Murray.

From the website:

Kindred Britain is a network of nearly 30,000 individuals — many of them iconic figures in British culture — connected through family relationships of blood, marriage, or affiliation. It is a vision of the nation’s history as a giant family affair.

A quite remarkable resource.

Family relationships connecting people, a person’s relationship to geographic locations and a host of other associated details for 30,000 people await you!

From the help page:


Originating Kindred Britain by Nicholas Jenkins

Developing Kindred Britain by Elijah Meeks and Karl Grossner

Designing Kindred Britain by Scott Murray

Kindred Britain: Statistics by Elijah Meeks


User’s Guide by Hannah Abalos and Nicholas Jenkins


Glossary by Hannah Abalos and Emma Townley-Smith


Terms of Use

If you notice a problem with the site or have a question or copyright concern, please contact us at

An acronym that may puzzle you: ODNB – Oxford Dictionary of National Biography.

In Developing Kindred Britain you will learn Kindred Britain has no provision for reader annotation or contribution of content.

Given a choice between the rich presentation and capabilities of Kindred Britain, which required several technical innovations and less capabilities but reader annotation, I would always choose the former over the latter.

You should forward the link to Kindred Britain to anyone working on robust exploration and display of data, academic or otherwise.

QuaaxTM 0.7.4 release

Monday, November 5th, 2012

QuaaxTM 0.7.4 release by Johannes Schmidt.

A new release of QuaaxTM

From the webpage (

A PHP Topic Maps engine with persistent storage which supports ISO/IEC 13250-2 Topic Maps Data Model (TMDM).

QuaaxTM is a PHP Topic Maps engine which supports ISO/IEC 13250-2 Topic Maps Data Model (TMDM).

The TMDM is a subject centric data model.

QuaaxTM implements the PHPTMAPI core and index interfaces. PHPTMAPI is based on the TMAPI specification and provides a standardized API for PHP 5 to access and process data held in a topic map.

QuaaxTM persists Topic Maps data using MySQL with InnoDB as storage engine and therefore benefits from transaction support and referential integrity.

Machine Learning in All Languages: Introduction

Wednesday, September 5th, 2012

Machine Learning in All Languages: Introduction by Burak Kanber.

From the post:

I love machine learning algorithms. I’ve taught classes and seminars and given talks on ML. The subject is fascinating to me, but like all skills fascination simply isn’t enough. To get good at something, you need to practice!

I also happen to be a PHP and Javascript developer. I’ve taught classes on both of these as well — but like any decent software engineer I have experience with Ruby, Python, Perl, and C. I just prefer PHP and JS. Before you flame PHP, I’ll just say that while it has its problems, I like it because it gets stuff done.

Whenever I say that Tidal Labs’ ML algorithms are in PHP, they look at me funny and ask me how it’s possible. Simple: it’s possible to write ML algorithms in just about any language. Most people just don’t care the learn the fundamentals strongly enough that they can write an algorithm from scratch. Instead, they rely on Python libraries to do the work for them, and end up not truly grasping what’s happening inside the black box.

Through this series of articles, I’ll teach you the fundamental machine learning algorithms in a variety of languages, including:

  • PHP
  • Javascript
  • Perl
  • C
  • Ruby

Just started so too soon to comment but thought it might be of interest.

Neo4jPHP Available as a Composer Package

Sunday, July 29th, 2012

Neo4jPHP Available as a Composer Package

Announcement of and brief instructions on Neo4jPHP as a Composer package.

Pass along to your friends but to libraries in particular. PHP and Neo4j make a particularly good combination for complex but not “web scale” information environments.

Solarium: Solr library for PHP

Sunday, March 4th, 2012

Solarium: Solr library for PHP

A problem with Solr tools descriptions is which features to list:

  • Facet support
  • Query building API
  • Complex update queries
  • Query inheritance
  • Plugin system
  • DisMax support
  • Configuration mode
  • Spatial search
  • MoreLikeThis
  • Highlighting
  • Grouping
  • Spellcheck
  • Stats component
  • Terms queries
  • Distributed search
  • Analysis
  • Client adapters
  • Term and phrase escaping
  • Loadbalancing plugin
  • PostBigRequest plugin
  • CustomizeRequest plugin
  • Use-at-will structure
  • Developed using continuous integration
  • Solarium uses the PSR-0 standard

So I dodged that bullet by listing all of Solarium’s features. 😉

You won’t (and probably shouldn’t) try to use all of them for your first interface. But this listing should give you ideas for how your library interface can change and grow in the future.

A track record of successful use of technologies like PHP, Solarium and Solr isn’t going to harm your job prospects.

Building a Graph data structure in PHP

Friday, February 17th, 2012

Building a Graph data structure in PHP

From the post:

Graphs are one of the most frequently used data structures,along with linked lists and trees. In a recent PHP project I needed to build a Graph structure to analyze some interlinked urls. The problem was of a simple nature, so rather than writing my own code, I went with the one available in the Pear repository.

The Pear Structures_Graph package allows creating and manipulating graph data structures. It allows building of either directed or undirected graphs, with data and metadata stored in nodes. The library provides functions for graph traversing as well as for characteristic extraction from the graph topology.

You won’t be processing sharded graph databases in PHP (hopefully) but you may have other graph applications for which PHP will be entirely appropriate.

And if nothing else, it is an easy way to experiment with graphs as a data structure.

Open Source OData Tools for MySQL and PHP Developers

Tuesday, February 14th, 2012

Open Source OData Tools for MySQL and PHP Developers by Doug Mahugh.

To enable more interoperability scenarios, Microsoft has released today two open source tools that provide support for the Open Data Protocol (OData) for PHP and MySQL developers working on any platform.

The growing popularity of OData is creating new opportunities for developers working with a wide variety of platforms and languages. An ever increasing number of data sources are being exposed as OData producers, and a variety of OData consumers can be used to query these data sources via OData’s simple REST API.

In this post, we’ll take a look at the latest releases of two open source tools that help PHP developers implement OData producer support quickly and easily on Windows and Linux platforms:

  • The OData Producer Library for PHP, an open source server library that helps PHP developers expose data sources for querying via OData. (This is essentially a PHP port of certain aspects of the OData functionality found in System.Data.Services.)
  • The OData Connector for MySQL, an open source command-line tool that generates an implementation of the OData Producer Library for PHP from a specified MySQL database.

These tools are written in platform-agnostic PHP, with no dependencies on .NET.

This is way cool!

Seriously consider Doug’s request for what other tools you would like to see for OData?

PHP and MongoDB Tutorial

Monday, January 30th, 2012

PHP and MongoDB Tutorial

Presentation by Derick Rethans on MongoDB and PHP. Walks through the most common aspects of using PHP with MongoDB.

From myNoSQL.

Cutting Edge Data Processing with PHP & XQuery

Sunday, January 1st, 2012

Cutting Edge Data Processing with PHP & XQuery

From the webpage:

PHP and XQuery have always been an happy couple and we are looking to build on that momentum. Our goal is to contribute a powerful toolkit to harness unstructured data in PHP developments. In this perspective, the first edition of the PHP Tour was a perfect fit to introduce developers with the possible interactions between PHP and XQuery. The aim of the talk was to explore the gain of functionality and productivity that can be achieved by introducing XQuery into PHP applications.

The slide deck by William Cadillion, from PHP Tour Lille 2011, will give you an idea of the capabilities of PHP and XQuery. I mention this because PHP is widely used in the library community and XQuery will make that use more productive and powerful.


Thursday, December 15th, 2011

Neo4jPHP by Josh Adell.

From the webpage:

PHP Wrapper for the Neo4j graph database REST interface

In-depth documentation and examples:

API documentation:

And from the introduction:

The goal of Neo4jPHP is to provide you with access to all the functionality of the Neo4j REST API via PHP. It does not provide a one-to-one correspondence with the REST API calls; instead, the REST interface is abstracted away so that you can concentrate on modelling your application’s domain in nodes and relationships. Neo4jPHP provides an API that is both intuitive and flexible, and it takes advantage of “under-the-hood” performance enhancements, such as caching and lazy-loading.

I just scanned through the documentation but it looks fairly clean and well-written. I pushed this out to the XML4Lib list but if you know of other library lists, please share it.

How to Cache PHP Sessions in Membase

Friday, November 25th, 2011

How to Cache PHP Sessions in Membase

Another “practical” post for today! 😉

A good tutorial that outlines the issues with Memcache and then proceeds to solve them with Membase.

From the blog:

Membase is memcache with data persistence. And it doesn’t use something like memcache, it is memcache. So if you have code that already is using memcache, you can have it use membase right away, usually with no change to your code.

The improvement of having data persistence is that if you need to bring down a server, you don’t have to worry about all that dainty, floaty data in memory that is gonna get burned. Since membase has replication and persistence built-in, you can feel free to restart a troublesome server without fear of your database getting pounded as the caches need to refill, or that a set of unlucky users will get logged out. I’ll let you read about all the many other advantages of membase here. It’s much more than I’ve mentioned here.

I know a lot of libraries run PHP based interfaces so please forward this to any librarians that you know.

Development Setup for Neo4j and PHP: Part 1 + 2

Monday, November 7th, 2011

Development Setup for Neo4j and PHP: Part 1

Development Setup for Neo4j and PHP: Part 2

by Josh Adell.

From part 1:

I would really love to see more of my fellow PHP developers talking about, playing with, and building awesome applications on top of graph databases. They really are a powerful storage solution that fits well into a wide variety of domains.

In this two part series, I’ll detail how to set up a development environment for building a project with a graph database (specifically Neo4j). Part 1 will show how to set up the development and unit testing databases. In Part 2, we’ll create a basic application that talks to the database, including unit tests.

All the steps below were performed on Ubuntu 10.10 Maverick, but should be easy to translate to any other OS.

Forward this to your library and other friends using PHP.

GraphDB in PHP

Wednesday, November 2nd, 2011

GraphDB in PHP by Alessandro Nadalin and David Funaro.

Well, at 163 slides you know there is going to be some introductory graph material but it went by quickly enough. Would have liked to see the presentation that went with the slides but even without it, the slides are fairly interesting.

Good to see PHP libraries because PHP is so widely used as a scripting language. (No offense to others, just an observation. Use whatever is the most comfortable for you.)

Integrating Zend Framework Lucene with your Cake Application

Monday, October 10th, 2011

Integrating Zend Framework Lucene with your Cake Application

From the post:

This is a short tutorial that teaches you how to integrate Zend Framework’s Lucene implementation (100% PHP) to your application. It requires your server to have PHP5 installed, since ZF only runs on PHP5, and is likelly to be deprecated very soon.

Another search implementation guide.

Curious, (for my students), could I take the results of a search at one site and combine them with the results from another site? If that were your task, what questions would you ask? Is using the same search engine enough? If not, what more would you need to know? Is there anything you would like to do as part of the combining process? Assume that you have free access to any needed data.


Sunday, July 10th, 2011


From the website:

What is Flintstone?

A key/value database store using flat files for PHP.

Features include:

  • Memory efficient
  • File locking
  • Caching
  • Gzip compression
  • Easy to use

Since I have covered other key/value store databases I thought I should include this one as well.

Could be useful for quick mockups.

Although I am mindful of a developer who complained to me about a script that was supposed to be too limited for long term production use by the customer. Later found out it met their production requirements quite nicely.

The lesson I drew from that was a need for greater transparency with customers and licensing.

Neo4j for PHP

Monday, June 20th, 2011

Neo4j for PHP

From the post:

Lately, I’ve been playing around with the graph database Neo4j and its application to certain classes of problems. Graph databases are meant to solve problems in domains where data relationships can be multiple levels deep. For example, in a relational database, it’s very easy to answer the question “Give me a list of all actors who have been in a movie with Kevin Bacon”:

Using Neo4j with a scripting language, PHP, that is popular with librarians.