- From: Larry Betts <lbetts@thoughtwm.com>
- Date: Wed, 16 Apr 2014 16:45:27 -0400
- To: Jarno van Driel <jarnovandriel@gmail.com>
- Cc: rhm@pioneerca.com, Gregg Kellogg <gregg@greggkellogg.net>, Niklas Lindström <lindstream@gmail.com>, public-rdfa <public-rdfa@w3.org>
- Message-ID: <CACPkK6WXL-34n0vk1hFzvhEV0r_JgxRU-zkn+JmCx0hXrwTrCQ@mail.gmail.com>
That's some great information Jarno! Would "itemid" be an analog to the RDFa "reference"/"about"? Regards, *Larry P. Betts* Search Engine Marketing Specialist Thoughtwire Marketing LLC PO BOX 8077 Mansfield, OH 44907 Phone: 877-848-9581 Ext. 1055 Direct: 419-610-2076 Fax: 440-209-7783 Email: lbetts@thoughtwm.com <pfernando@thoughtwm.com> Web: http://www.thoughtwiremarketing.com <http://www.thoughtwm.com/> On Wed, Apr 16, 2014 at 4:23 PM, Jarno van Driel <jarnovandriel@gmail.com>wrote: > Hey folks, > > I just wanted you to know that after the last mailing I have been doing > quite some reading as well extensive testing and am happy to inform you > that Google now fully supports @itemid as global identifier and that > linking to it actually works! > > Not only do I get the right results in Google's Structured data testing > tool but in also Webmaster tools. I've been testing with @itemid on my own > site, by having multiple objects link to the same entity, as well creating > cycles by having entities point to each other, and everything returns the > proper values and types. > > I have reworked the example Niklas provided in Microdata so you can see > yourself: > (don't feel like reading the code? than look at what the SDTT makes of it: > http://bit.ly/1jLitKl) > > <body itemid="page" itemscope itemtype="http://schema.org/ItemPage"> > <link itemprop="copyrightHolder" href="corp"> > > <article itemprop="text"> > <div itemid="article" itemscope itemtype="http://schema.org/Article"> > <link itemprop="publisher" href="corp"> > > <h1 itemprop="name">How to copy properties in RDFa Lite & > Microdata</h1> > </div> > </article> > > <footer itemprop="mentions" itemscope itemtype=" > http://schema.org/WPFooter"> > <p> > <span itemid="corp" itemprop="about" itemscope itemtype=" > http://schema.org/Corporation"> > <a itemprop="url" href="http://www.example.org"> > <span itemprop="name">Corporation name</span> > </a> > > <span itemprop="description">Corporation description</span> > </span> > </p> > </footer> > </body> > > Thanks for all the great input you have given me! I actually have hope > again that I will be able to make sense of RDFa because of it. :) > > > 2014-03-11 19:02 GMT+01:00 Richard H. McCullough <rhm@pioneerca.com>: > > You might want to steal some ideas from the mKR language. >> >> mKR lets you name any list of propositions, e.g., >> my propositions :: { proposition list }; >> and manipulate that list in numerous ways. >> >> You can add, delete, ... propositions >> You can change the underlying class hierarchy >> ... >> >> *Dick McCullough * >> Context Knowledge Systems<http://mkrmke.org/ContextKnowledgeSystems.html> >> mKE and the mKR language <http://mkrmke.org/mKEmKR.html> >> mKR/mKE tutorial <http://mkrmke.org/doc/MKEtutorial.html> >> >> ------------------------------ >> Date: Tue, 11 Mar 2014 15:41:09 +0100 >> From: jarnovandriel@gmail.com >> To: gregg@greggkellogg.net >> CC: lindstream@gmail.com; public-rdfa@w3.org >> Subject: Re: how do I copy some properties that are part of a bigger >> pattern >> >> >> Thanks for the sources Gregg. Some of 'm I know but with the new insights >> I have now I bet some of 'm will make much more sense to me now. I'll make >> sure to read it before asking more questions. >> >> >> 2014-03-11 2:01 GMT+01:00 Gregg Kellogg <gregg@greggkellogg.net>: >> >> On Mar 10, 2014, at 5:07 AM, Jarno van Driel <jarnovandriel@gmail.com> >> wrote: >> >> "...There is no difference here between links and "nested" items..." + >> "...Try the example..." >> Thanks, you just made my brain explode. =) >> >> It's been a couple of years since my first attempts at understanding RDFa >> - which failed miserably - since I have difficulty translating the W3 >> specifications in, for me, understandable rules on how it's supposed to be >> used and what it can do. Your comments together with the RDFa Play outcome >> succeeded where countless hours of reading specifications and experimenting >> with markup have failed me. Seriously Niklas, thanks! >> >> Now as for the IRC meet, let that slide for now. A tsunami of >> possibilities just flushed over me and I have to give it some time to let >> it sink in. The first thought I had after reading your comments and seeing >> the RDFa Play outcome was that writing an article about the use of @itemref >> isn't that difficult but comparing that to rdfa:pattern just became a whole >> lot more complicated. It now has become clear to me there is no 1:1 >> relation between the two - where I thought there was - and that RDFa offers >> different solutions for many of the situations where one only can use >> @itemref in Microdata. Which IS marvelous but which leaves me confused in >> how to clarify that in an article without writing a series that's as thick >> as the bible. >> >> >> There are some great discussion threads on public-rdfa-wg in around >> December 2012, starting with a proposal from Ivan. Check out the >> "Reproducing Gregg/Niklas' thoughts ..." thread in >> http://lists.w3.org/Archives/Public/public-rdfa-wg/2012Dec/thread.html. >> >> As Niklas points out, the original concept was that a semantic approach >> to property-copying, where we identified a resource and used it as the >> source for copying properties, and remove the original "template" resource. >> Basically, it could mostly be done using SPARQL with INSERT DATA/DELETE >> DATA. It's worth looking at the thread to see some of the thought processes >> that were going on at the time. >> >> I do know however that I want to limit myself to RDFa Lite since it's the >> RDFa community's answer to Microdata. Or at least that's way I understand >> it. So let me therefore ask, what are the differences between RDFa and RDFa >> Lite? Is there any clear documentation about the difference between the two >> I can read? >> >> >> The RDFa Lite 1.1 recommendation <http://www.w3.org/TR/rdfa-lite/> >> pretty much calls this out. Also, the RDFa 1.1 Primer < >> http://www.w3.org/TR/xhtml-rdfa-primer/>. The key observation to the >> LIte recommendation is that RDFa gets complicated when there are too many >> attributes on an element, and the distinction between @about and @resource >> can be subtle. Even now, I see people having a problem with Microdata, when >> they use @itemprop on an anchor, and seem to expect the content of the >> element, rather than the value of @href to be used as the property's value. >> RDFa suffers from the same issue, but things get simpler when you restrict >> yourself to using fewer attributes and avoid combining them together. >> >> That said, there is quite a bit of power in full RDFa 1.1, particularly >> in the use of lists and chaining < >> http://www.w3.org/TR/rdfa-core/#s_chaining>. Chaining is really useful >> when you have a number of resource values from the same property, for >> example the author list of a document. This avoids repeating markup, but it >> is a sophisticated feature. IMO, you really can't write RDFa (full or lite) >> or Microdata without running it through a distiller to verify that it says >> what you mean. >> >> Let me widen the question: Are there any sources you guys can recommend >> me to read about RDFa (Lite)? >> Like I said earlier, it's been a couple of years for me, so I hope new >> documentation exists by now, besides the W3 specifications. >> >> >> Manu wrote a great post on the differences between RDFa Lite and >> Microdata: <http://manu.sporny.org/2012/mythical-differences/>. >> >> Gregg >> >> 2014-03-09 18:10 GMT+01:00 Niklas Lindström <lindstream@gmail.com>: >> >> Hi Jarno, >> >> On Sun, Mar 9, 2014 at 5:08 PM, Jarno van Driel <jarnovandriel@gmail.com>wrote: >> >> "...outputs two different nodes for what seemingly is the same >> corporation..." >> You're right in stating that this results in two instances of the same >> Corporation. Which is the only way in Microdata to have an Item >> (Corporation) be linked to other Items by means of different properties >> (copyrightHolder & publisher). The following markup simply wouldn't work in >> Microdata: >> <div itemprop="manufacturer" itemref="corporation-data"> >> >> >> Yes, microdata (presumably) being a tree model prevents it from >> connecting items together naturally. It's a big flaw. It only deals with >> surface data, and says nothing about what it means. Perhaps @itemid makes >> it into some kind of graph at times though, it's hard to tell when there >> are no semantics explaining what that entails. >> >> >> In Microdata itemref can only get additional info about a Type. You can't >> use it on a property and then use itemref to get the @itemtype elsewhere.. >> That's why in Microdata I have to declare the Corporation twice, to be able >> to link it to different entities (ItemPage & Article) by means of different >> properties (copyrightHolder & publisher). Which brings me to the question: >> Can this be accomplished RDFa Lite where it can't in Microdata? - keeping >> in mind that in this specific example according to schema.org rules the >> publisher and copyrightHolder are both expected to 'have' a type and are >> not supposed to 'link' to a type. >> >> >> Yes, it can. RDFa uses the RDF data model, which is a graph [1]. There is >> no difference here between links and "nested" items. You type and (when >> needed) identify things, link them together and describe their details with >> literals (texts) – all using properties. That is what I did in the example >> given. >> >> >> "...<p resource="#page"> >> <span property="copyrightHolder" typeof="Corporation" >> resource="#corp">..." >> The downside to this method is that the copyrighHolder-Corporation now >> gets linked falsely. I quickly checked the output in Google's SDTT, which >> showed the Corporation being a child of the WPFooter as opposed to being >> the copyrightHolder of the ItemPage. The use of rdfa:pattern prevents this >> happening as does a itemscope without an itemtype in Microdata e.g. <div >> itemscope>. >> >> >> The Google SDTT is wrong. It should recognize that <p resource="#page"> >> sets the subject for nested statements (here ensuring that the <#page> has >> the <#corp> as :copyrightHolder). It seems that adding a @typeof: >> >> <p resource="#page" typeof="ItemPage"> >> >> makes it behave somewhat more as expected. But note that that isn't >> necessary in RDFa, it's just a workaround for a bug in the SDTT. (Try the >> example out in e.g. <http://rdfa.info/play/> to see it more clearly.) >> >> >> >> "Also, the resulting data here doesn't contain two distinct nodes for >> what is apparently meant to be the same corporation." >> True, but the two distinct nodes also have type-specific relations to the >> two distinct items this example has, namely ItemPage and Article. Maybe >> that info got a bit lost because I stripped out so much of the original >> HTML. The source I took this from has an ItemPage with a gazillion other >> types attached to it while the Article is just that, an Article, with it's >> own set of properties, mostly separated from the rest of the content on the >> ItemPage, only sharing data from the Corporation. >> >> >> I think I see how you mean. But if you think of this in terms of the RDF >> data model, the items simply are resources linked together (and assigned >> some types, and described with textual properties), rather than blocks of >> data tied to the page structure (or the microdata tree structure, which >> hardly helps). In this model, the corporation is surely one thing, >> connected to from the ItemPage using copyrightHolder, and from the Article >> using publisher (both of which are fine since the thing linked to is of the >> expected type). >> >> >> >> "I'd be happy to take a look at such examples as well."< br> >> Maybe we should meet in an IRC session, like Gregg suggested, because I'm >> convinced we can keep this argument-counterargument up for quite some time. >> Not that I mind, since this mailing has already given me a ton to think >> about, but simply to be more time-efficient. Just let me know what you guys >> prefer, either way is fine with me. >> >> >> I'm fine either way too. :) I tend to have intermittent bouts of time, so >> mailing is usually better for examples. But I could go for a chat over >> specifics if needed. >> >> Cheers, >> Niklas >> >> [1]: http://www.w3.org/TR/rdf11-primer/ >> >> >> >> >> >> 2014-03-09 14:19 GMT+01:00 Niklas Lindström <lindstream@gmail.com>: >> >> Hi Jarno and Gregg! >> >> It seems to me that this is a good example of where @itemref-like >> functionality is quite unnecessary in RDFa. The #copyright-holder simply >> contains a link from the page to the corporation, and the #publisher-url >> and #publisher-description contain properties of that corporation. The >> resulting microdata, however, outputs two different nodes for what >> seemingly is the same corporation, so perhaps the example has been >> simplified too much, thus obscuring what is actually needed? >> >> Still, In RDFa, instead of adding different @id:s to disparate parts of >> the page which are about the same resource (and then listing them in >> @itemref), you simply use @resource to capture the fact that a given block >> is about it. >> >> Your example can thus be written like this in RDFa Lite: >> >> - - - 8< - - - >> >> <body vocab="http://schema.org/" typeof="ItemPage" resource="#page"> >> <article property="text"> >> <div typeof="Article"> >> <link property="publisher" resource="#corp"> >> >> <h1 property="name">How to copy properties in RDFa Lite & >> Microdata</h1> >> </div> >> </article> >> >> <footer property="mentions" typeof="WPFooter"> >> <div property="text"> >> <p resource="#page"> >> <span property="copyrightHolder" typeof="Corporation" >> resource="#corp"> >> <a property="url" href="http://www.example.org"> >> <span property="name">Corporation name</span> >> </a> >> >> <span property="description">Corporation description</span> >> </span> >> </p> >> </div> >> </footer> >> </body> >> >> - - - >8 - - - >> >> In my opinion, this is a more convenient way of handling data smeared out >> in a messy tag soup (with the results being shorter and more legible). Of >> course, you need to name these resources, unless they already have formal >> URIs, but that's easily done with a fragment identifier or a bnode id. (And >> note that in microdata, you instead need to ensure that a layout designer >> doesn't meddle with the @id values used by @itemref, for quite different >> reasons (their use in CSS and JS).) >> >> Also, the resulting data here doesn't contain two distinct nodes for what >> is apparently meant to be the same corporation. >> >> Remember, it is only when you need to duplicate a set of properties for >> different resources that rdfa:copy is necessary. And even in those >> circumstances, you might be able to leverage the way @resource can group >> descriptions together, to build up one pattern from disparate parts of the >> page. >> >> I'd be happy to take a look at such examples as well. >> >> Cheers, >> Niklas >> >> >> >> On Sun, Mar 9, 2014 at 11:51 AM, Jarno van Driel <jarnovandriel@gmail.com >> > wrote: >> >> I think your and my latest example just passed each other Gregg. I guess >> I posted mine when you were writing yours because when I compare the two I >> see we implemented the same workaround by means of additional @resource. >> >> "I wouldn't recommend the use of included patterns in RDFa, but it can >> be made to work." >> I wouldn't recommend it either but unfortunately the everyday website out >> there consists out of a HTML-soup which doesn't allow for Semantic markup >> to be added in a nice and clean way. Now I mainly work on already existing >> websites, where I have to make do with HTML that's already in place. >> Therefore itemref or rdfa:pattern are indispensable when organizing/linking >> data that's smeared out over many different HTML elements on a page. I am >> very aware this results in markup that isn't 'nice' but it helps create >> meaning even if the HTML is a mess. >> >> "P.S., I think it’s great that you’re trying to describe this for a >> wider audience!" >> Well, I'm not doing it alone. Aaron Bradley is acting as the devil's >> advocate by asking me questions which mess up the solutions I provide. >> Which in return forces me to come up with different solutions and ask a lot >> of questions at the public-vocabs (and now here as well). :) >> >> So trying to do something for a bigger audience will most definitely end >> up in something that has been contributed by many people. As always this >> kind of stuff ends up being a multi-community/person effort since it brings >> together so many different specializations and specifications. >> >> -- >> >> Andy and Gregg, >> Thanks for sharing your knowledge, I'll make sure re-share it and am >> hopeful it will result in an article (or series of) which will try to serve >> anybody who is (or should be) interested in this type of info. >> >> >> 2014-03-09 6:46 GMT+01:00 Gregg Kellogg <gregg@greggkellogg.net>: >> >> On Mar 8, 2014, at 5:50 PM, Jarno van Driel <jarnovandriel@gmail.com> >> wrote: >> >> "..the @resource attributes get in the way.." >> Could you explain this to me a bit more please Gregg? Because if I parse >> my last markup through the Structured data linter and RDFa Play I get 100% >> the same outcome as with your markup. Yandex and Google see the same data >> as well (in a ever so slightly different manner). >> >> When I look at the output these parsers have no trouble extracting the >> @resources as different rdfanodes. Unless I'm completely overlooking >> something, or am breaking some cardinal rules, which both are feasible >> since I just got around to looking more deeply into RDFa Lite. >> >> >> In order to be able to reference the publisher-uri and >> publisher-description information as patterns, they need to have an >> identifier, which I supplied by adding @resource (and >> @typeof=“rdfa:Pattern) to each. However, this changes the scope of their >> properties relative to the copyright-holder. >> >> In you’re RDFa version you weren’t able to access the publisher-uri or >> publisher-description, as you do from Microdata. The RDFa property copying >> uses a resource of type rdfa:Pattern, which must be identified as a >> resource. For this reason, I added the @resource and @typeof for both the >> publisher-description and publisher-url. However, doing that, changes the >> current subject for each of these, so the “url” and “description” >> properties are allocated to different resources. To get around this, I >> added the rdfa:copy properties both the the publisher reference, and to the >> copyright-holder, so that the properties appear in each of them. I wouldn’t >> recommend the use of included patterns in RDFa, but it can be made to work. >> >> I’d recommend both for Microdata and RDFa to keep references simple, and >> using included references, while possible, can make things more confusing. >> This is certainly not a pattern we were concerned about when crafting the >> property copying mechanism in HTML+RDFa. They two really work quite >> differently: Microdata requires full access to the DOM so that referenced >> elements can be copied, which requires random access to the DOM. The RDFa >> mechanism operates at a semantic level, by creating triples as normal. RDFa >> is intended to work with streaming processors, where there is no >> random-access to the DOM. The spec provides details of the rules which are >> applied to achieve the effect of property copying [1], but it’s not really >> magic to RDFa, and could just as easily be done for triples extracted from >> Turtle, or even Microdata, if the appropriate copying rules were applied.. >> >> I understood that you didn’t know how to deal with a pattern embedded in >> another pattern, which I attempted to address for you. I think that the >> RDFa I provided does essentially what your Microdata does. If you want to >> discuss more, we should probably meet on IRC. >> >> Gregg >> >> P.S., I think it’s great that you’re trying to describe this for a wider >> audience! >> >> [1] http://www.w3.org/TR/rdfa-in-html/#implementing-property-copying >> >> >> 2014-03-09 1:33 GMT+01:00 Gregg Kellogg <gregg@greggkellogg.net>: >> >> Hi Jarno, I don’t think you can do precicely what you want, since if a >> pattern is included in another pattern, the @resource attributes get in the >> way. You can do it by adding some more rdfa:copy properties. This is what I >> came up with: >> >> <body vocab="http://schema.org/" resource="#item-page" typeof="ItemPage"> >> <link property="rdfa:copy" href="#copyright-holder"> >> >> <article property="text"> >> <div resource="#article" typeof="Article"> >> <div property="publisher" typeof="Corporation"> >> <link property="rdfa:copy" href="#publisher-url"/> >> <link property="rdfa:copy" href="#publisher-description"/> >> </div> >> >> >> <h1 property="Name">How to copy properties in RDFa Lite & >> Microdata</h1> >> </div> >> </article> >> >> <footer property="mentions" typeof="WPFooter"> >> <div property="text"> >> <p resource="#copyright-holder" typeof="rdfa:Pattern"> >> <span property="copyrightHolder" typeof="Corporation"> >> <link property="rdfa:copy" href="#publisher-url"/> >> <link property="rdfa:copy" href="#publisher-description"/> >> <span resource="#publisher-url" typeof="rdfa:Pattern"> >> <a id="publisher-url" property="url" href=" >> http://www.example.org" title> >> <span property="name">Corporation name</span> >> </a> >> </span> >> >> <span resource="#publisher-description" typeof="rdfa:Pattern"> >> <span id="publisher-description" >> property="description">Corporation description</span> >> </span> >> </span> >> </p> >> </div> >> </footer> >> </body> >> >> Gregg Kellogg >> gregg@greggkellogg.net >> >> On Mar 8, 2014, at 2:37 PM, Jarno van Driel <jarnovandriel@gmail.com> >> wrote: >> >> <body vocab="http://schema.org/" resource="#item-page" typeof="ItemPage"> >> <link property="rdfa:copy" href="#copyright-holder"> >> >> <article property="text"> >> <div resource="#article" typeof="Article"> >> <link property="publisher" typeof="Corporation" href=?????> >> >> <h1 property="Name">How to copy properties in RDFa Lite & Microdata</h1> >> </div> >> </article> >> >> <footer property="mentions" typeof="WPFooter"> >> <div property="text"> >> <p resource="#copyright-holder" typeof="rdfa:Pattern"> >> <span property="copyrightHolder" typeof="Corporation"> >> <a id="publisher-url" property="url" href="http://www.example.org" >> title> >> <span property="name">Corporation name</span> >> </a> >> >> <span id="publisher-description" property="description">Corporation >> description</span> >> </span> >> </p> >> </div> >> </footer> >> </body> >> >> >> >> >> >> >> >> >> >> >> >> >
Received on Thursday, 17 April 2014 09:46:05 UTC