Re: Drupal user profiles in RDFa

Hey Stephane,

Regarding #1, I tried this:

<a resource="path_to_node" property="foaf:name" typeof="sioc:User"
class="username" title="View user profile." rel="sioc:creator_of foaf:made"
about="user/1" href="/user/1">Henry</a>

I used the inverse of created_by and maker so that there was only one
subject, the user. It isn't as intuitive when you look at it, which is a
shame, but the Check RDFa browser tool returns:

http://localhost/lin-clark-drupal/user/1
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <
http://rdfs.org/sioc/ns#siocUser>
<http://xmlns.com/foaf/0.1/name> "Henry"
<http://rdfs.org/sioc/ns#creator_of> <
http://localhost/lin-clark-drupal/path_to_node>
<http://xmlns.com/foaf/0.1/made> <
http://localhost/lin-clark-drupal/path_to_node>

Which I think includes all the same information, let me know if I missed
anything.

-Lin



On Sun, Oct 11, 2009 at 11:09 AM, Stephane Corlosquet <scorlosquet@gmail.com
> wrote:

> Hi all,
>
> I'm checking the RDFa markup we have chosen for Drupal 7 and want to make
> sure it's optimal, given that it won't be able to change it after the code
> freeze (which in one week!). In particular I'd like to discuss the case of
> the user markup which is used to describe the author or a page or comment.
> "User profile" in this email refers to the concept of sioc:User /
> foaf:OnlineAccount. Drupal has 3 main cases which all have different markup.
>
>
> 1. If the administrator of the site decided to make the user profile pages
> public, then the author will be a link to the author profile page
> http://example.org/user/23. The original markup is:
>
> <a href="/user/23" title="View user profile." class="username">John</a>
>
> We have 2 options to add RDFa to this link which both return the same RDF
> data:
>
> <a href="/user/1" rel="sioc:has_creator foaf:maker" title="View user
> profile." class="username"><span resource="/user/1" typeof="sioc:User"
> property="foaf:name">Henry</span></a>
>
> or
>
> <span rel="sioc:has_creator foaf:maker"><a href="/d7sprint/user/1"
> typeof="sioc:User" property="foaf:name" title="View user profile."
> class="username">Henry</a></span></span>
>
> Question for the RDFa ninjas reading this: is there a way to embed all this
> information without adding a span tag either inside or outside the a
> existing a tag. I'm asking this because adding extra markup is frown upon by
> Drupal themers as it might break some CSS rules or have unintended effects,
> so if we can do without it it's best. To understand the risk of adding an
> extra span, take a long at the second option above: if there is a CSS rule
> on "a span" path targetting other markup on the site, then name of the
> author will suddenly be affected by this rule, while it would not in the
> original non-RDFa markup. Unfortunately there is no "blank" tag which maybe
> would have been helpful here by not interacting with CSS. Such "blank" HTML
> tag would have been useful in this case to wrap RDFa markup and ensure it is
> not targeted by any CSS rule (this could be a convention at least).
>
>
> 2. If the user profile pages are not accessible then only the name of the
> author will be displayed and we are missing the URL of her profile page, or
> rather I should say we can generate a URI for the user profile, but
> resolving it would lead to a 403 Access denied. The default Drupal markup in
> this case is simply:
> <span class="username">John</span>
>
> I see 3 alternatives to annotate this in RDFa:
>
>   2.1 Use a markup similar to the one above, but the cons is that the user
> profile URI will not be dereferencable (and hereby breaking one of the
> Linked Data principles). It will return a 403 Access denied.
>
> <span rel="sioc:has_creator foaf:maker" class="username"><span
> resource="/user/1" typeof="sioc:User"
> property="foaf:name">Henry</span></span>
>
>   2.2 Same as 2.1 but without the resource attribute hence generating a
> bnode. I always try hard to avoid generating these, but if this is no work
> around, then we'll have to use it.
>
> <span rel="sioc:has_creator foaf:maker" class="username"><span
> resource="/user/1" typeof="sioc:User"
> property="foaf:name">Henry</span></span>
>
>   2.3 We don't introduce the concept of user profile and simply link the
> page to a name (literal).
>
> <span class="username" property="foaf:maker">Henry</span>
>
> I don't like 2.3 because it's not as meaningful from an RDF perspective.
> Also, we don't have the same choices in the RDF properties we can use due to
> the domain which is now a literal, which would be a problem in the context
> of Drupal since the page -> author relationship gets the same set of RDF
> properties no matter what the case is (between 1, 2 or 3). So I'd rather use
> 2.1 or 2.2. but we've got to decide between the best of the two: a non
> dereferencable URI or a bnode? I like the non referencable URI because we
> can uniquely identify the author outside the scope of the page, but I wonder
> how the parsers will react when trying to resolve the URI.
>
>
> 3. In the case of a non registered user leaving a comment, Drupal offers to
> leave her name, homepage and email address (though the email address is not
> displayed for privacy reasons). The default markup is:
>
> <a href="http://openspring.net/" rel="nofollow" class="username">Stephane
> Corlosquet (not verified)</a>
>
> We don't have a user profile URI here, but a homepage which is usually
> linked to a foaf:Person. Here we have multiple options again to describe the
> author of a comment. I'm not sure we should directly link a page to a
> foaf:Person, should we?. Do we have to generate a foaf:OnlineAccount
> /sioc:User URI here based on the homepage by adding #user to it? use a
> bnode? opinions?
>
> Stephane.
>

Received on Monday, 12 October 2009 11:45:38 UTC