After some commotion the copyright issues around the W3C Semantic Web logos are now settled. A few simple lines of RDF/XML have also been added to the SVG versions of the logos, essentially using two
cc:license predicates connecting to two URI-s in W3C space. SVG is nice, because you can add RDF/XML into the SVG file itself, making such additional metadata easy to add.
But what about the other files? Well, that is what POWDER is all about. And because the best way learning something is to use it, I decided to put the copyright statements in place via POWDER. Of course, this is still a moving target, i.e., the exact predicate names might still change, the tools to follow up and extract all the triples are not yet in place, etc, but the general structure is there. So it is worth learning it.
The first step is to create an RDF file containing the so called POWDER resources. There are two types of license statements, depending on whether the logo includes the W3C logo or not. So I have to begin by:
<wdr:Package rdf:ID="SWLogos"> <wdr:hasDRs rdf:parseType="Collection"> <wdr:DR rdf:about="#SWLogosWithW3C"/> <wdr:DR rdf:about="#SWLogosWithoutW3C"/> </wdr:hasDRs> </wdr:Package>
So far so good. The resources
#SWLogosWithW3C are where the real meat is: information has to be provided on the “scope”, ie, which resources we are making statements on (in this cases the logo URI-s themselves) and the “descriptors”, ie, what those statements are. So we have the following structure:
<wdr:DR rdf:ID="SWLogosWithoutW3C"> ... <wdr:hasScope> ... </wdr:hasScope> <wdr:hasDescriptors> <wdr:Descriptors> ... </wdr:Descriptors> </wdr:hasDescriptors>
The second (i.e., descriptors’) part is easy. One defines properties for the
<wdr:Descriptors> resource (i.e., the
cc:license properties); the idea is that these properties will apply to the the resources that are identified via the object of the
<wdr:hasScope> predicate. (Yeah, that is a little bit tricky; properties are defined for a subject that are then also applied to other subjects via a POWDER processor… There are discussions around this, and it is still a design issue the group is fighting with).
The more interesting part is to identify the resources, and this is where the scope comes in. For that purpose, URI patterns are used: one should say that, well, the URI-s are on the W3C domain, starting exactly with this and this path, they should end with specific suffixes (ie, svg, png, etc). As a small extra complication in this specific case, names that have the string ‘w3c’ in them should be excluded; indeed, as said above, another type of license applies to those. The definition of these resources is very much at the heart of the POWDER specification, so it is spawn into a separate document.) Here is how it is done:
<wdr:hasScope> <wdr:ResourceSet> <wdr:includeHosts>www.w3.org</wdr:includeHosts> <wdr:includePathStartsWith>/Icons/SW/</wdr:includePathStartsWith> <wdr:excludePathStartsWith>/Icons/SW/Buttons</wdr:excludePathStartsWith> <wdr:includePathEndsWith>png svg gif eps</wdr:includePathEndsWith> <wdr:excludeRegEx>w3c</wdr:excludeRegEx> </wdr:ResourceSet> </wdr:hasScope>
It pretty much says what I wrote above, right?
The last element of the puzzle is to make this file available somehow. One way is to add a reference to the W3C Semantic Web logos index page itself. How? For example, use an HTML profile defined by the POWDER group and a single
<link> statement referring to the resource file itself. A POWDER implementation will, eventually, do the whole POWDER processing, returning triples like:
<rdf:Description rdf:about="http://www.w3.org/Icons/SW/sw-cube.gif> <cc:license rdf:resource="http://www.w3.org/2007/10/sw-logos.html#LogosWithoutW3C/> </rdf:Description>
Cute… I am eager to see the first implementation!
Of course, there are a number of issues I did not cover here (authentication, dates, etc); but maybe made you curious enough to read the document itself!