Main Page Content
Introduction To Xfml Core Concepts
XFML is an XML language to share hierarchical faceted metadata. The spec for
XFML Core (aka XFML version 1.0) is here: http://www.xfml.org/spec/1.0.html It also describes why XFML is different. The spec contains a conceptual model, a description of the XML specification and processing instructions.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.Topics
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"> <name>Bogota</name> </topic>
Facets.
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>
Pages.
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="http://poorbuthappy.com/colombia"> <title>Guide to Colombia</title> <description>A website about Colombia</description> <occurrence topicid="diving"/> <occurrence topicid="bogota" strength="5"/> </page>
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 http://www.whitehouse.gov 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"> <name>Colombia</name> <connect>http://othersite.com/xfml.xml#18753</connect> <psi>http://www.cia.gov/cia/publications/factbook/geos/co.html</psi> <psi>http://poorbuthappy.com/colombia</psi> <description>Colombia, the country</description> </topic>
Publishing maps.
You can simply put your map on your website as an XML document (http://www.yourdomain.com/maps/xfml.xml),
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.Conclusion.
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.