rNews 0.5: Introduction to rNews
rNews is a set of specifications and best practices for using RDFa to embed news-specific metadata into HTML documents. In this document, we'll provide an overview rNews and an implementation guide. We'll get started by reviewing the class diagram of the rNews data model. Following that we'll review each individual class. After that we will use rNews to annotate a sample news document. We will conclude with a guide for implementors of rNews.
Of course, it would be unconscionably boring of us to simply rattle off the technical specification of each class. To stave off boredom we're introducing a real-world example: a real New York Times story appearing in a make-believe newspaper called "The IPTC Herald Tribune."
The typical news-focused website presents news in two major formats articles and media. Articles are composed of many attributes including dateline, body text, and word count. Media items come in many types such as audio, video, and image and are composed of attributes such as height, width and encoding. Articles and media items also share a number of common attributes including title, creation date, and copyright notice. The rNews data model, shown below, is built around these observations. This diagram shows each class and the relations between classes.
As you can see, the rNews data model is centered around two classes NewsItem class and the Concept class. We'll start by describing the NewsItem class. This class models attributes common to both articles and media items. The NewsItem class is extended by two subclasses Article and Media which model attributes particular to each type. An Article object may be illustratedBy one or more Media objects. A NewsItem may be discussedBy one or more Comment objects.
The other central class is the Concept class. Below this class is shown below in greater detail.
The Concept class is used to model abstract concepts. It is extended by subclasses that model specific types of real-world concepts. The Location class extends the Concept class with geospatial attributes. The Party class extends the Concept class with those attributes common to both people and organizations, such as contact information. The Party class is extended by both the Person and the Organization classes which model attributes particular to each type.
A number of relations exist between the NewsItem class and the Concept class and its subclasses. An article may be taggedBy a Concept object. And a newsItem may have several relations to the Party object.
- If a Party is primarily responsible for the creation of a NewsItem, then a createdBy relation exists between the two objects.
- If a Party has contributed to a NewsItem but is not the primary creator, then a contributedBy relation exists between the two objects.
- If a Party is the legal entity responsible for a NewsItem, then a hasAccountableParty relation exists between the two objects. The practice of having a legally accountable party for a news item is more prevalent in Europe than elsewhere.
- If a Party holds the copyright to a NewsItem, then a copyrightedBy relation exists between the two objects.
- If a Party is the outlet most responsible for the creation of a NewsItem, then a hasSource relation exists between the two objects.
- If a Party provides the NewsItem for publication, then a providedBy relation exists between the two objects.
The difference between a Party that provides a NewsItem and a Party that is the source for a NewsItem may be confusing, so lets consider an example. Suppose The Boston Globe writes a general interest article about an impending snowstorm and the Associated Press distributes the article. Then this article hasSource "Boston Globe" but is providedBy "The Associated Press." Incidentally, since the Boston Globe is owned by The New York Times Company, this article is copyrightedBy "The New York Times Company" not "The Boston Globe."
Like NewsItem objects, Comment objects may be associated with a creating Party via the createdBy relation.
One additional note about the rNews data model: all of the class relations have an equivalent inverse relation. For example if a NewsItem is illustratedBy a Media object, then we could also say that the Media object illustrates the NewsItem. Inverse relations have been omitted from the class diagram for the sake of clarity but are specified in the table below.
| Subject Class | Verb | Object Class | Definition |
|---|---|---|---|
| NewsItem | discussedBy | Comment | Specifies that a NewsItem is discussed by a Comment. |
| NewsItem | taggedBy | Concept | Specifies that a NewsItem has a Concept |
| NewsItem | createdBy | Party | Specifies that a NewsItem has been created by a Party. |
| NewsItem | contributedBy | Party | Specifies that a NewsItem has been contributed to but not created by a Party. |
| NewsItem | copyrightedBy | Party | Specifies that a NewsItem has its copyright held by a Party. |
| NewsItem | hasSource | Party | Specifies that a NewsItem was created for a Party. |
| NewsItem | providedBy | Party | Specifies that a NewsItem has been provided for publication by a Party. |
| NewsItem | hasAccountableParty | Party | Specifies that a NewsItem has a legally accountable Party. |
| Article | illustratedBy | Media | Specifies that an Article is illustrated by a Media object. |
| Media | illustrates | Article | Specifies that an Media object illustrates an Article. Inverse of illustratedBy. |
| Concept | tags | NewsItem | Specifies that an Concept corresponds to a NewsItem. Inverse of taggedBy. |
| Party | creates | NewsItem | Specifies that a Party is a creator of a NewsItem. Inverse of createdBy. |
| Party | creates | Comment | Specifies that a Party is a creator of a Comment. Inverse of createdBy. |
| Party | contributes | NewsItem | Specifies that a Party is a contributor to a NewsItem. Inverse of contributedBy. |
| Party | holdsCopyright | NewsItem | Specifies that a Party holds the copyright to a NewsItem. Inverse of copyrightedBy. |
| Party | isSourceOf | NewsItem | Specifies that a Party is the entity for which the NewsItem was originally created. Inverse of hasSource. |
| Party | provides | NewsItem | Specifies that a Party has provided a NewsItem for publication. Inverse of providedBy. |
| Party | isAccountableFor | NewsItem | Specifies that a Party is the legally accountable entity for a NewsItem. Inverse of hasAccountableParty. |
| Comment | createdBy | Specifies that a Comment has been created by the specified Party. Inverse of creates. | |
| Comment | discusses | NewsItem | Specifies that a Comment discusses a NewsItem. Inverse of discussedBy. |