Showing posts with label rdfa. Show all posts
Showing posts with label rdfa. Show all posts

Monday, August 22, 2011

Structured Data Website Launch


Structured Data Website Launch (via Gregg Kellogg)

A number of Web developers from the RDFa, Microdata and Microformats communities announce the launch of the Structured Data website and community. There are a number of syntaxes for expressing structured data in HTML today: RDFa, Microdata and Microformats. While each syntax has its own parsing rules and data model, the underlying concept among all of them is the same - to express Structured Data in HTML.

The Structured Data website (http://structured-data.org/) provides resources to learn about, markup and debug structured data in HTML, including RDFa, Microdata and Microformats. One of the new features, not available anywhere else, is a unified Structured Data Linting Service (http://linter.structured-data.org/), complete with Google Rich Snippets and schema.org examples (http://linter.structured-data.org/examples/) in both Microdata and RDFa format. The Structured Data Linter provides a unified service for verifying and visualizing the structured data contained in web pages, and supports the RDFa and Microdata syntaxes, with Microformats support on the way.

At the time of this announcement, the Google and Microsoft testing tools do not support schema.org markup in RDFa or Microdata. The need for such linting service has been expressed many times on the schema.org mailing list and we are happy to announce that the service is now available. Gregg Kellogg has been instrumental in creating the linting service with support from Stéphane Corlosquet. Web developers may now use the linter service to ensure that their schema.org Microdata or RDFa markup is valid.

The Structured Data Linting Service is a beta launch and thus contains a number of bugs. That said, we felt that it would be best to get this tool into the hands of the Web developer community. We invite the Web developer community to try it out, report bugs (https://github.com/structured-data/linter/issues), suggest new features (http://groups.google.com/group/structured-data-dev) and contribute new ideas and code. All of the source code is released under a public domain dedication and is available on github (https://github.com/structured-data/).


Structured Data on the Web
Structured Data on the Web. More and more of the world's data is moving onto the Web. We want to share, re-mix and use this data to build more awesome Web applications. Using structured data techn...

Friday, August 27, 2010

Context, content and getting over ourselves...

I am a huge fan of Lucas Gonze's weblog, where he wrote something recently which strikes me as quite profound.
Keep music from the web in the web. Don't go to a music blog, download a track, and then listen in iTunes.
Instead, he advocates bookmarking and playing music in the page that contains it, once again returning to fundamental link between URI and resource, between index and content.

What, for that matter, is a Content Management System? The term is a necessary evil; it's not like it is meaningless. But when you use this term to refer to WordPress or Blogger, I get an uneasy feeling, and reading Gonze's comment really cemented for me the reason why. The text on the page in front of you? It's not content. It's context. The page may provide content, but it is itself a context for whatever content it provides.

More on this later, just passing around the lightbulb moment, as it were.

Friday, May 14, 2010

Tab Sweep - 2010 05 14

Dare Obasanjo on Facebook:

Facebook’s Open Graph Protocol from a Web Developer’s Perspective

danah boyd on Facebook:

Facebook and "radical transparency" (a rant)

Not surprising that Facebook is facing criticism; I appreciate danah's demonization of transparency, and the distinction she draws between being exposed and exposing oneself. One of the things I appreciate about Twitter is that the level of exposure of any conversation I have there is dictated directly by the object graph of those involved in the conversation. If I want to curse and swear, I can engage someone in a conversation with whom this is appropriate. But there is always a risk of exposure.

Dare's point is also well taken on many levels, but particularly from my viewpoint, ontologically speaking, that Facebook is leveraging RDFa and not microformats, and that RDFa is an exponentially more robust technology specifically due to the use of namespaces. And what better way to identify arbitrary URIs as social objects than by using namespaces? In issues of transparency and privacy, it seems that disambiguation, ie clarification of social context will become increasingly important.

Reread danah's rant, especially the Zuckerburg quotes referring to the artificiality of sustaining a multiple identity. My own reaction to this is equally violent, and I call BS - all relationships in a social graph are virtualizations or supplementation of something that they are not, actual relationships. They are by definition artificial and demand disambiguation.

My travels in Flex-land keep coming back to the importance of namespaces outside the strict context of XML. Their time is coming; more widespread use of RDFa and the need for disambiguated rather than radical transparency are definitely indicative of this.

Saturday, November 21, 2009

More Semantic Silliness

<object>
<span property="dc:creator">Dan Brown</span>
<span property="dc:title">The Du Blinci Core</span>
</object>

...in which Tom Hanks plays a singleton node who discovers that he is somehow miraculously able to hold content, assisted in his search for meaning by Audrey Tautou, who along the way learns to re-purpose several hitherto erstwhile under-appreciated property attributes.
Sir Ian McKellen turns in a riveting performance as a priest who is actually an xml spy utilizing a Saxon transformer-implementation.

This perhaps is a film I would enjoy....

Friday, November 20, 2009

Sketches for a Group Membership Vocabulary

(Or the Strange Tale of RDFa and the Room with Two Doors)

I am sketching these ideas out here because I think they may be useful at some point, and I would really appreciate feedback; if this sort of vocabulary is already available somewhere, please ping me and let me know. And I'm going to save the RPG analogy for the end, because I know these can be deterrent. [ed. whatever! skip to the jump; it's funny!]

An activity I have had to address on several projects now involves profiling or gate-keeping groups of people or objects for the purpose of authorization or processing. For instance, in a CRM application, it might be necessary to tag potential customers as prospects, clients, inactive, etc. Or for a workflow application for a working group, it might be necessary to track people who are actively developing, people who have left the group, but are still useful resources and so on. I have yet to see a reasonable vocabulary for tracking these people. If such a vocabulary exists, I am sure it has many uses in a variety of contexts.

This vocabulary would have the following component(s):

Membership Status (mg:status):
This is the status of an individual, group or artifact within a larger community, given the following states, which should be mutually exclusive:
  • unknown - this is a nicety and not essential. Undefined.
  • prospect - potential only to be a group member.
  • candidate - selected by an automated process to become a group member, but not one yet.
  • nominee - recommended to become a group member by an existing member.
  • initiate - has completed self-registration etc, but not yet a group member.
  • member - an active member of the group.
  • banned - removed from group by process with proviso of reentry.
  • permban - removed from groupt by process with no proviso for reentry. TERMINAL.
  • alumnus - a non-active former member of the group. TERMINAL.
  • permanent - a member that can never be removed from the group. TERMINAL.
This list is likely not complete, but it represents a fairly typical group workflow model. When you enter the system, you are unknown, and are "promoted" to membership. At this point, you are ripe for the picking. At some point you may reach a terminal, but the majority of people will probably reside in the prospect and member categories.

So here is the RPG example:
A group of adventurers is exploring a location, when they reach two doors, one red and one blue. At this point, with respect to each of the doors, the two rooms could be described using the following RDFa-like pseudoterminology:

<room id="behind_the_red_door">
<member id="adv1" property="mg:status" content="prospect"/>
<member id="adv2" property="mg:status" content="prospect"/>
<member id="adv3" property="mg:status" content="prospect"/>
</room>


...and similarly for the room behind_the_blue_door.

Now, one of the adventurers discovers a key to one of the doors. At this point, this adventurer becomes content="candidate", whereas the other adventurers become content="intitiate" - they have an understanding of how to enter, but only the first adventurer has the key. However, since the door is now unlocked. Sicne the door is locked, only candidates can enter. When the first adventurer unlocks the door, the state of the room changes such that now candidates and initiates may enter (the state of the door in this case might be handled by a separate vocabulary - also this example hinges painfully poorly on the assumption that once unlocked, a door cannot be relocked).

At this point, adv2, the knight steps forward and enters the room:

<room id="behind_the_red_door">
<member id="adv1" property="mg:status" content="candidate"/>
<member id="adv2" property="mg:status" content="member"/>
<member id="adv3" property="mg:status" content="intitiate"/>
</room>


Naturally, the brave knight discovers that the room is full of a poisonous gas, and sensibly flees. The group of adventurers investigates the second door:

<room id="behind_the_blue_door">
<member id="adv1" property="mg:status" content="prospect"/>
<member id="adv2" property="mg:status" content="prospect"/>
<member id="adv3" property="mg:status" content="prospect"/>
</room>


Fortunately, the same key unlocks this door as well, and the door is unlocked. The knight is less enthusiastic, so the curious wizard enters the room.

<room id="behind_the_blue_door">
<member id="adv1" property="mg:status" content="candidate"/>
<member id="adv2" property="mg:status" content="intitiate"/>
<member id="adv3" property="mg:status" content="member"/>
</room>


So far so good. Mind you, this room is full of a tasteless and odourless poisonous gas, but nobody seems to have noticed. The wizard beckons to his companions to enter the room:

<room id="behind_the_red_door">
<member id="adv1" property="mg:status" content="candidate"/>
<member id="adv2" property="mg:status" content="alumnus"/>
<member id="adv3" property="mg:status" content="initiate"/>
</room>
<room id="behind_the_blue_door">
<member id="adv1" property="mg:status" content="member"/>
<member id="adv2" property="mg:status" content="member"/>
<member id="adv3" property="mg:status" content="member"/>
</room>


And now the diabolically cunning design of the room becomes painfully clear, as the combined effect of the gases in the two rooms becomes apparent, and the unfortunate knight, who has membership || alumnus status for both rooms, turns into a pillar of salt.

<room id="behind_the_red_door">
<member id="adv1" property="mg:status" content="candidate"/>
<member id="adv2" property="mg:status" content="alumnus"/>
<member id="adv3" property="mg:status" content="initiate"/>
</room>
<room id="behind_the_blue_door">
<member id="adv1" property="mg:status" content="alumnus"/>
<member id="adv2" property="mg:status" content="permanent"/>
<member id="adv3" property="mg:status" content="alumnus"/>
</room>


So ends the story of "RDFa and the Diabolic Room with Two Doors."