Version History
===============

cognition/0.1-alpha1 :-

* initial release
* metadata: <meta>, <link>, <title>, @role, eRDF
* eRDF does not support rdf:type syntax
* RFC 2731 is supported for namespaces
* microformats: hcard, hcalendar, adr, geo
	- hcalendar support assumes page is one giant calendar
	- no support for rel-tag, so no support for categories in hcard or
	  hcalendar
	- geo support includes body, altitiude and reference-frame extensions           
	- microformats patterns: include-pattern, abbr-pattern, extensions
		+ include-pattern supports my alternative syntax
		+ abbr-pattern supports Andy Mabbett's alternative
* RDF output of namespaced metadata


cognition/0.1-alpha2 :-

* drop usage of XML::XPath module, using XML::DOM instead
	- might use XML::DOM::XPath in future if XPath support is needed
* support XML namespaces used as metadata namespaces.
* microformats: hcalendar (complete), rel-tag, rel-license, figure, xoxo
	- rel-licence extended to support searches for 'license' in CC or
	  DCTERMS namespaces; or 'rights.license' in DC or DCTERMS namespaces
	- experimental figure microformat based on current brainstorming
* parse document structure (headings + semantic tables + semantic
  images/figures microformat? + xoxo lists)


cognition/0.1-alpha2.1 :-

* Fix handling for entities.
* Fix delay on LWP::RobotUA.


cognition/0.1-alpha3 :-

* Switch from XML::DOM to XML::LibXML. Should be my last big parser change!
* Restructure object to be more tuple-like.
* URLs:
	- Support for CURIEs.
	- support for geo: and tag: URIs
	- use XPointer to provide URLs for document fragments without identifiers
* RDF:
	- use <rdf:Bag> to wrap multiple tuples with the same subject and property
	- Remove duplicate values within bags
	- add support for microformats to RDF output
	- RDF subjects may have multiple URIs defined to help match up properties
	  that actually belong to the same subject (e.g. some properties might be
	  attached to a fragment identifier, and others to an hcard, but if we
	  know that the hcard root element has an id attribute which matches the
	  fragment identifier, then we can equate the subjects)
	- support "vocabularies" for RDF
	- convert document structure to RDF <http://purl.org/dc/terms/hasPart>,
	  <http://purl.org/dc/terms/isPartOf>.
* Improve STRINGIFY to prevent all these leading and trailing spaces
* Recognise (X)HTML predefined link types and put them in XHTML namespace.
* More reliable support for namespaces.
* Microformats:
	- Properly parse DateTimes found in microformats.
	- support table cell header pattern
	- support hcalendar 1.1 draft
* Complete support for RDFa
* Much improved support for eRDF, support rdf:type. Any bugs?
* Improved support for XHTML role attribute


cognition/0.1-alpha4 :-

* Support rel=meta: retrieve additional document metadata, parse as RDF
* GRDDL:
	- Beginnings of GRDDL support.
	- Support for rel=transformation linking to XSLT to transform doc to RDF
	- Support for grddl:transformation="" style transformations.
	- No support for <head profile> yet.
* Microformats:
	- Table cell header pattern has been changed on wiki. Implement changes.
	- Better microformat nesting handling.
* Improvements in charset handling and support for tag-soup HTML.
* Comment out pre-RDFa <link rel>, <a rel> support. It's not really useful.
* Disable eRDF by default as it seems to generate too many false positives.


cognition/0.1-alpha5 :-

* Various minor improvements to hCard and hCalendar parsing.
* Export framework
	- Add vCard export option.
		+ Parses data: URIs and outputs as base64 embedded data.
		+ Pulls in data from full gamut of supported semantics, so that, say,
		  RDFa FOAF data may end up as part of the vCard output.
		+ Test input: <http://examples.tobyinkster.co.uk/hcard>.
	- Add KML export option.
		+ Data can come from hCard, (e)RDF(a) vCard, (e)RDF(a) GeoRSS, etc.
* Re-enabled eRDF by default, but eRDF parsing is now stricter. It *requires*
  a profile of <http://purl.org/NET/erdf/profile> to be found on the <head>
  element.
* Improved command-line client. Use GetOpt::Long, Pod::Usage.
* Support RDF embedded in HTML <!-- comments -->. (Trackback uses this.)


cognition/0.1-alpha6 :-

* Microformats:
	- Add option (disabled by default) to require <head profile> for microformat
	  support. Microformat profiles are treated as OPAQUE STRINGS! Supports th
	  following profiles:
		+ http://purl.org/uF/2008/03/
		+ http://www.w3.org/2006/03/hcard or http://purl.org/uF/hCard/1.0/
		+ http://dannyayers.com/microformats/hcalendar-profile or
		  http://purl.org/uF/hCalendar/1.0/
		+ http://purl.org/uF/hAtom/0.1/
		+ http://purl.org/uF/rel-tag/1.0/
		+ http://purl.org/uF/rel-license/1.0/
		+ No profiles required for rel-enclosure, adr or geo (yet).
	- Support for hAtom, WebSlices.
		+ In addition to hAtom 0.1, rel-enclosure is supported within hEntries.
	- Improve include-pattern support to prevent some infinite loops.
* GRDDL:
	- Add option (disabled by default) to require <head profile> for GRDDL.
	- Add option to check profile URLs for profileTransformation links.
* Export:
	- Atom output. (Supports RDF/RSS and hAtom as input.)
	- iCalendar export option.
		+ hCalendar 1.1 events.
		+ hCalendar 1.1 todo items
		+ hCalendar 1.1 freebusy info.
		+ hCalendar 1.1 alarms.
		+ hAtom entries (as VJOURNAL).
		+ W3C's iCal RDF vocab (but see note in Cognition/Export/Calendar.pm)
		+ RSS Event Module <http://web.resource.org/rss/1.0/modules/event/>
* Added a "--nofollow" option to prevent secondary fetching from particular
  hosts. (Secondary fetching = requesting <head profile>, <link rel="meta">,
  <link rel="transformation">.)
* Support <rdf:RDF> elements found directly in (X)HTML.
* Much improved HTML->Text convertion. Namely: word wrapping, line breaks added
  after block elements, quote marks around <q> elements, bullet points and
  numbers before <li> elements in unordered and ordered lists, brackets around
  superscript text, parentheses around subscripts, tab characters between table
  cells, usenet-style quoting for <blockquote>, alt text from <img> and <input
  type="img">, values from other <input> tags. Should be able to handle nested
  elements like //ul/li/ol/li/dl/dd/blockquote/img[@alt]. Won't be completely
  foolproof, but should be an improvement over what was there before!
* Fix so that the entire page is not given a rdf:type of ical:vcalendar unless
  it contains some bona fide vevent/vtodo/valarm/vfreebusy nodes.


future work :-

* Big improvements to web interface -- the command line is far more capable
  right now. Most people use the web interface only, so Cognition isn't being
  presented in the best possible light.
* Implement related-to for hCalendar components and iCalendar export.
* RDF output should not be handled by HTMLParser.pm: it should be implemented
  as an export module just as everything else is.
* Output RDF datatypes (e.g. <http://www.w3.org/2001/XMLSchema#date>). They're
  already parsed -- just not output).
* Microformats: hreview, hresume, hlisting?
