Project of The Sunlight Foundation    
The Open House Project from The Sunlight Foundation

An RSS Standard for Committee Hearings

July 10th, 2007 by John Wonderlich · 6 Comments

The committee section of the Open House Project report made several specific suggestions about how to make information from congressional committees more publicly accessible and useful. One of the basic steps we recommended was to use RSS feeds to announce committee meetings. We have created a template for announcing committee hearings with structured data. (This is an xml file, if you’d like to see what it looks like, check out below.)

RSS feeds of committee events enable several things to happen very easily. Standardizing the way committees announce their public events will allow the events to be aggregated. This means we may soon be able to set up a calendar, widget, or website that lists all upcoming congressional committee hearings. Structured formats also make information far more useful: easily imported, sorted, even combined with other data sources. The information is more useful because the elements within the document are given an identity and therefore gain semantic value. You can arrange events by date, search for speakers, or browse titles, since structured information makes the identity of those things clear within the document.

My thinking has been the following: if you can set up a calendar from a data set made available by a professional sports team, why not from Congress?

One of the reasons that it hasn’t happened yet is that it takes coordination and specialized knowledge to create a standard. If a standard isn’t broadly accepted, then its worth is diminished, so this is the sort of thing that is best done well the first time. That’s where the sunlight labs comes in. Here’s Jeremy Carbaugh’s post on the sunlight labs blog, where he goes into more detail about what they used to create this XML sample.

Based on John Wonderlich’s work on the Open House Project and Joshua Ruihley’s work on Open Hearings, we here in the Labs decided to write a ‘dream feed’ as an example of an RSS format congress could use to syndicate their committee meeting schedule…

The feed was written to the RSS 2.0.9 spec. Since RSS is meant for syndication, two additional modules, elements belonging to a namespace, were used to add the information that was needed. The xCal XML specification was used to add event data to the feed. xCal is an XML representation of the widely used iCalendar format. The format is fairly straighforward except for the organizer and attendee elements. The specification requires the value of these elements to be a URI rather than a string naming the individual. The URI can be any identifier, but is typically the email address of the individual. To include the name of the individual, a cn attribute must be added to the tag. Additionally, the attendee element has a role attribute that describes the role in which the attendee will be serving. We’ve added a custom X-WITNESS role to identify witnesses that are testifying before a committee.

They’re looking for feedback, so your advice will be welcomed.

Finally, I’d like to post the actual code, so you can see what they’ve been working on. Please, let us know what you think.

<?xml version="1.0"?>
<rss version="2.0"
    xmlns:xcal="urn:ietf:params:xml:ns:xcal"
    xmlns:enc=" http://www.solitude.dk/syndication/enclosures/">
  <channel>
    <title>House Committee Schedule</title>
    <link>http://house.gov/schedule/</link>
    <description>Master schedule for house committees.</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 06 Jul 2007 09:39:21 EDT</lastBuildDate>
    <docs>http://www.rssboard.org/rss-2-0-9</docs>
    <generator>House Schedule Generator 1.0</generator>
    <webMaster>schedule@house.gov&lt ;/webMaster>
    <ttl>3600</ttl>
    <item>
      <title>Subcommittee on General Farm Commodities and Risk Management</title>
      <link>http://agriculture.house.gov/hearings/schedule.html</link>
      <description>To review trading of energy-based derivatives.</description>
      <pubDate>Fri, 06 Jul 2007 09:39:21 EDT</pubDate>
      <guid>http://agriculture.house.gov/hearings#200707121000</guid>
      <category domain="http://house.gov/schedule/type">hearing</category>
      <category domain=" http://house.gov/schedule/visibility">public</category>
      <xcal:organizer cn="House Committee on Agriculture">http://agriculture.house.gov</xcal:organizer>
      <xcal:location>1300 Longworth House Office Building, Washington, DC</xcal:location>
      <xcal:dtstart>2007-07-12T10:00:00Z</xcal:dtstart>
      <xcal:dtend>2007-07-12T11:00:00Z</xcal:dtend>
      <xcal:attendee role="CHAIRMAN" cn="Rep. John Doe">mailto:john.doe@house.gov</xcal:attendee>
      <xcal:attendee role="OPT-PARTICIPANT" cn="Rep. Joe Smith">mailto: joe.smith@house.gov</xcal:attendee>
      <xcal:attendee role="X-WITNESS" cn="Dan Johnson">mailto:djohnson@company.com</xcal:attendee>
      <enc:enclosure title="Live Media">
        <enc:link type="video/quicktime" length="11534336"
          url="http://agriculture.house.gov/hearings/200707121000.mov " />
        <enc:link type="audio/mpeg" length="11534336"
          url="http://agriculture.house.gov/hearings/200707121000.mp3 " />
      </enc:enclosure>
      <enc:enclosure title="Archived Media">
        <enc:link type="video/quicktime" length="11534336"
          url="http://agriculture.house.gov/hearings/archive/200707121000.mov" />
        <enc:link type="audio/mpeg" length="11534336"
          url="http://agriculture.house.gov/hearings/archive/200707121000.mp3" />
      </enc:enclosure>
      <enc:enclosure title="Agenda">
        <enc:link type="application/pdf" length="11534"
          url=" http://agriculture.house.gov/hearings/200707121000_agenda.pdf" />
      </enc:enclosure>
    </item>
  </channel>
</rss>

Tags: OpenHouse

6 responses so far ↓

  • links for 2007-07-11 : Greg Palmer // Jul 10, 2007 at 7:47 pm

    [...] An RSS Standard for Committee Hearings | The Open House Project Again, a good first step from John Wonderlich (tags: webdev) [...]

  • Joshua Tauberer // Jul 10, 2007 at 8:18 pm

    This is nice progress and would be very useful if taken up.

    Three suggestions–

    First, “who” is having the meeting is not explicitly represented. The title field of the event gives the name of the subcommittee, but which committee’s subcommittee is it? And what would the tag look like if it were a full committee meeting? (The title of the feed as a whole includes the name of the committee, but you’d have to hack around with the content of that tag to extract just the name of the committee — the name should be in a separate tag.)

    I’m not sure how attendee tags should be used, since not everyone will have a public email address or any other obvious identifier. But for members of congress, an existing identifier system should be co-opted if one is going to be used at all, such as bioguide IDs.

    Lastly, it would be great to also include tags to represent what bills are relevant to the meeting. The xml.house.gov work may have something useful to co-opt to refer to bills, or if not something that, for instance, follow GovTrack’s naming conventions for bills.

  • Jeremy Carbaugh // Jul 11, 2007 at 2:23 pm

    Josh,

    1) The organizer element is the place I would look for information about which committee or subcommittee is holding the hearing. The example feed is bad because it references the subcommittee in the title element and the committee in the organizer element. I’ll get that changed in version 2. One thing we’ve discussed internally is whether a subcommittee meeting needs to reference the committee to which it belongs. I’m under the opinion that, given the context, a meeting of the subcommittee does not need a reference to the parent because the feed is used to syndicate event information, not House organizational structure.

    2) The one saving grace of the attendee tags is that it requires a URI instead of a URL. I really like the idea of using the bioguide IDs for members of congress. Rather than using mailto:member@house.gov we could use gov.house:bioguide:110:0001. Are the bioguide IDs unique across sessions? Witnesses are more difficult. While email addresses would be a great option, it would be more realistic to use a custom URI such as gov.house:schedule:committee:20070711:001 with an arbitrary ID per witness. The ability to identify a witness across hearings would be lost, but if that’s the best that can be done…

    3) I’ll take a look at the House XML markup. Thanks!

    Jeremy

  • Joshua Tauberer // Jul 11, 2007 at 5:08 pm

    Oops — I missed the organizer element. Nevermind that.

    But– keep in mind that when aggregating, an event that shows up in the calendar as “Subcommittee on Health” is confusing if you don’t know which committee it belongs too.

    Bioguide IDs are unique IDs assigned to people, incl. all MoC’s (incl. since 1786 or whatever), members of the continental congress, etc. Unfortunately, multiple IDs are assigned to the same individual on rare occasion (possibly just historical records of women who changed their name after marriage).

    For witnesses, I think it would be asking for quite a lot for committee website admins to come up with URIs for arbitrary people. I’d suggest just dropping URIs for them.

  • links for 2007-07-31 « My Weblog // Jul 31, 2007 at 5:40 am

    [...] An RSS Standard for Committee Hearings | The Open House Project Using RSS to schedule and announce meetings (tags: rss webdev web20) [...]

  • The Cunctator // Nov 14, 2007 at 7:16 pm

    Committee hearing RSS feeds also need tags for:
    * Hearing type (business meeting, oversight hearing, markup,
    legislative hearing; any of these can also be field hearing, though I
    suppose that could somehow be extracted from the location, maybe)
    * Which panel a witness is in
    * Whether a hearing has been cancelled or rescheduled
    * Witness testimony (usually submitted in advance)
    * What does a joint hearing look like?

Leave a Comment