Skip to page content or Skip to Accesskey List.


Main Page Content

Introduction To Xfml Core Concepts

Rated 3.45 (Ratings: 5)

Want more?


peter van dijck

Member info

User since: 22 Oct 1999

Articles written: 23

XFML is an XML language to share hierarchical faceted metadata. The spec for

XFML Core (aka XFML version 1.0) is here:

It also describes why

XFML is different
. The spec contains a

conceptual model
, a description

of the XML specification
and processing


Even for experienced metadata practitioners, some of the concepts in XFML can

be a bit weird. An XFML map consists of a number of facets (containers),

that each have trees of topics in them. It also contains a list of pages

with occurrences of topics on those pages.

Before we start, note that XFML doesn't try to syndicate all your metadata.

Only the metadata that is expressible as categories in facets. It doesn't try

to replace RDF or XTM

(Topicmaps) or other metadata formats: XFML is a very specific, focused format,

much like RSS.


In XFML, metadata consists of topics. Topics are categories, and are organized

in hierarchies (trees). Anything you can think of can be a topic. "Norway"

could be a topic. Or "Betrayal". Or "That dog that is barking

outside my window right now". Which topics to choose only depends on your

website: how do you want to present or organize the information in it. (Topic

concept explained in the spec

<topic id="bogota" facetid="place_to_go" parentTopicid="colombia">




Facets are containers that contain hierarchies of topics. The special thing

about facets is that they are mutually exclusive containers: "Places",

"Things to do" and "People" are mutually exclusive because

something cannot be a place and a thing to do at the same time. So they make

good facets.

Why organize topic trees in facets? Because it makes categorizing, browsing

and searching a lot easier by combining facets. There is a long history of library

science research behind this, here is a good overview. Just remember:

organizing topic trees in facets makes life easier. There are several good interfaces

available that let you try out browsing a faceted classification: Facetmap

and Teapot Server (by bpallen technologies)

are two good examples that are also XFML compatible. (Facet

concept explained in the spec

<facet id="thing_to_do">things to do</facet>


Adding pages to an XFML document means you are sharing your indexing efforts.

Indexing means assigning topics to pages (or the other way round). Quality indexing

takes a lot of work, and XFML makes it possible to share your indexing so other

people can reuse it.

<page url="">

<title>Guide to Colombia</title>

<description>A website about Colombia</description>

<occurrence topicid="diving"/>

<occurrence topicid="bogota" strength="5"/>


Since in XFML pages are indexed with topics in the same map, if you want to

reuse other people's indexing, you need to know what their topics mean in your

map. (Read this sentence twice)

You need to indicate to your application: "My topic A equals this other

maps' topic X". You can publish these connections with the connect element.

An alternative way of indicating what a topic means is to use a Published Subject

Indicator or psi. IF you are familiar with Topicmaps you will know what these

are: a psi is a url that points to a webpage that explains what the topic is.

So the topic "White house" could have a psi pointing to

Psi's are useful for automatic discovery of equal topics. The idea is that,

if two topics in different maps have the same psi, an application will know

for sure they are the same.

<topic id="colombia" facetid="place_to_go">





<description>Colombia, the country</description>


Publishing maps.

You can simply put your map on your website as an XML document (,

in the same way you would publish an RSS feed for example. Once published, other

people can take your map and generate links to your website, or maybe reuse

parts of the organization scheme you created.


So in short: XFML lets you share metadata. That's important because creating

metadata vocabularies is really hard, and indexing lots of pages is even harder.

Sharing these efforts is made possible by using <connect> and <psi>.

XFML Core is a frozen standard: you can safely implement it - it won't change.

Work on XFML 2.0 has started, but that is a long way off, and it will be a language

with a different purpose than XFML Core. Tool support is taking off: overview

of XFML compatible tools

Peter Van Dijck is an Information Architect with an interest in localization, accessibility, content management systems and metadata.
  • Weblog
  • Portfolio
  • Accessibility and localization
  • The access keys for this page are: ALT (Control on a Mac) plus: is an all-volunteer resource for web developers made up of a discussion list, a browser archive, and member-submitted articles. This article is the property of its author, please do not redistribute or use elsewhere without checking with the author.