com.facetmap
Interface Facet

All Known Subinterfaces:
CompoundHeadingFacet, DateFacet, GeographyFacet, KeywordFacet, SpectrumFacet, SqlFacet, TaxonomyFacet
All Known Implementing Classes:
CompoundLinearFacet, DateImpl, LinearFacet, ResourceIdFacet, SimpleCompoundHeadingFacet, SimpleDateFacet, SimpleFacet, SimpleSpectrumFacet, SimpleTaxonomyFacet, SpectrumImpl, TaxonomyImpl

public interface Facet

A means of classifying a Resource; this is the broadest abstraction of a single axis in the FacetSpace, orthogonal to all other Facets.

In most parlances, such a structure is called a facet. Facetmap defines it a bit more rigorously: The Facet is a set of possible classifications, one of which can be assigned to a given Resource. are mutually exclusive with regard to a given Resource. In other words, a resource is always bound to each Facet structure, but a resource is only bound to one Heading within each Facet structure. That is, classifying a Resource within one Facet does not affect how it gets classified within another Facet.

The notion of "browsing" is fundamental to Facetmap, so the Facet defines a rudimentary browsing interface. A Heading may have "forward headings", which represent the act of browsing to a more specific Heading (a Heading that would narrow the selection). A Heading may also have a "backward heading", which represents the act of browsing to a wider selection.

If a Resource is contained in Heading X, then Facetmap considers it to be contained in all Headings that are backward from X. Conversely, if a Resource is mapped to any of the Headings in X.getForwardHeadings() , Facetmap considers it to be contained in X as well. This enforces the rule that forward navigation narrows the selection and backward navigation widens it (although, to be more accurate, the selection may also remain the same size during either forward or backward browsing).

To complete the browsing model, a Facet also provides a root heading, which is a heading that contains all Resources, and the starting heading for navigation. The root heading should have no backward Heading.

This simple browsing model for a single Facet combines with the browsing models of other Facets, which is what enables the Facetmap navigation. Users actually browse via Selection objects, not Headings.


Nested Class Summary
static class Facet.Util
           
 
Method Summary
 Heading getHeading(java.lang.String id)
          Retrieves the Heading, with the specified ID, that is contained by this Facet.
 java.lang.String getId()
          Unique identifier.
 Heading getRootHeading()
          A facet structure is rooted at the heading returned by this method.
 java.lang.String getTitle()
          The descriptive name of this structure, for display to users.
 

Method Detail

getId

java.lang.String getId()
Unique identifier.


getTitle

java.lang.String getTitle()
The descriptive name of this structure, for display to users.


getHeading

Heading getHeading(java.lang.String id)
                   throws UnknownReferenceException
Retrieves the Heading, with the specified ID, that is contained by this Facet. If the facet doesn't recognize the ID, it will throw UnknownReferenceException.

Throws:
UnknownReferenceException

getRootHeading

Heading getRootHeading()
A facet structure is rooted at the heading returned by this method. The root provides a starting point for navigation through this facet structure; the root will be one of the headings in the Selection that contains all Resources. The root Heading should have no backward Heading.

In most cases, Resources that are not mapped to any Heading in this Facet are implicitly mapped to this function's return value. Selection.getBackwardSelections(). In some subinterfaces, the root takes on a more familiar role, e.g. the root node of a Taxonomy.

See Also:
Selection.getForwardSelections(com.facetmap.Facet)