Re: data.gov now live with RDFa

Rick,

Toby already pointed out the issue with the dc: namespace.

There's also this section:

<div class="hometext" about="data.gov program"  
property="dc:description">
   The purpose of Data.gov is to increase public access ...
</div>

The value of the @about attribute has to be a URI, and "data.gov  
program" is not a URI. Fixing it is easy, but depends on what exactly  
you want the data to say.

1. Maybe you want the text to be a description of the web page http://www.data.gov/ 
. Similar to the dc:title, dc:creator and dc:publisher triples that  
are already present. In that case, you would want to use about="",  
which is a shortcut for about="http://www.data.gov/" because an empty  
URI will be treated as a relative URI, and therefore expands to the  
URI of the current document. But since about="" is the default anyway,  
you could just drop the attribute completely and still get the same  
triple.

2. Maybe you want to text to be a description of the "data.gov  
program", the government activity/entity, and not just a description  
of the particular web page. In that case, you would need to decide on  
a URI that you want to use for this entity. One easy option would be  
about="#program", which again is a relative URI and would expand to http://www.data.gov/#program 
. In that case, it would be nice to add some more triples about the  
program.

The first option might be a bit more straightforward.

Best,
Richard


On 19 Aug 2009, at 11:50, rick wrote:

> Hello All:
>
> Just to give you a heads up the data.gov home page is now live with  
> RDFa tags.
>
> http://www.data.gov/
>
> The page has two triples. One about the page, one about the program.  
> We used this very simplistic approach to overcome any operational  
> barriers and develop experience in publishing RDFa tags.
>
> See below for source code that parses the triples. I used the INRIA  
> GRDDL transform.
>
> Have fun and I'll watch this list for feedback and such.
>
> -- 
> Rick
>
> cell: 703-201-9129
> web:  http://www.rickmurphy.org
> blog: http://phaneron.rickmurphy.org
>
> > more RDFaConsumer.java
> /**
> * @(#)RDFaConsumer.java
> * @author rick@rickmurphy.org
> */
>
> package gov.data;
>
> /**
> */
>
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.FactoryConfigurationError;
> import javax.xml.parsers.ParserConfigurationException;
>
> import org.xml.sax.SAXException;
> import org.xml.sax.SAXParseException;
>
> import java.text.ParseException;
>
> import java.io.UnsupportedEncodingException;
> import java.io.IOException;
>
> import org.w3c.dom.Document;
> import org.w3c.dom.Node;
> import org.w3c.dom.NodeList;
> import org.w3c.dom.Element;
>
> import javax.xml.transform.Transformer;
> import javax.xml.transform.TransformerFactory;
> import javax.xml.transform.TransformerException;
> import javax.xml.transform.TransformerConfigurationException;
> import javax.xml.transform.dom.DOMSource;
> import javax.xml.transform.stream.StreamResult;
> import javax.xml.transform.stream.StreamSource;
>
>
> import java.net.URL;
>
> public class RDFaConsumer{
>
>    private static String namespace;
>
>    /**
>     */
>    public RDFaConsumer(String uri){
>
> 	try {
> 	
> 	    DocumentBuilderFactory factory =  
> DocumentBuilderFactory.newInstance();
>            DocumentBuilder builder = factory.newDocumentBuilder();
> 	    Document input = builder.parse(new URL(uri).toString());
> 	    input.normalize();
>
> 	    DOMSource source = new DOMSource(input);
> 	    StreamResult result = new StreamResult(System.out);
> 	    StreamSource stylesheet = new StreamSource(new URL("http://ns.inria.fr/grddl/
> rdfa/2008/09/03/RDFa2RDFXML.xsl").toString());
>
> 	    // Use a Transformer for output
> 	    TransformerFactory tFactory = TransformerFactory.newInstance();
> 	    Transformer transformer = tFactory.newTransformer(stylesheet);
> 	    transformer.transform(source, result);
>
> 	    // transform the dom into RDF/XML
> 	    traverse(input);
>
>        } catch (SAXParseException spe) {
> 	    System.out.println("sax parse ex: " + spe);
>        } catch (SAXException sxe) {
> 	    System.out.println("sax ex: " + sxe);
>        } catch (ParserConfigurationException pce) {
> 	    System.out.println("parser config ex: " + pce);
>        }catch (UnsupportedEncodingException ude) {
> 	    System.out.println("unsupported encoding ex: " + ude);
>        } catch (IOException ioe) {
> 	    System.out.println("io ex: " + ioe);
>        } catch (TransformerConfigurationException tc) {
> 	    System.out.println("transformer config ex: " + tc);
>        } catch (TransformerException te) {
> 	    System.out.println("trasnformer ex: " + te);
>        }
>
>    }//RDFaConsumer
>
>    /**
>     */
>    public static void main(String[] args){
>
> 	new RDFaConsumer(args[0]);
>
>    }//main
>
>    /**
>     */
>    public void traverse(Node node){
>
>        // is there anything to do?
>        if (node == null) {
>            return;
>        }
> 	
>        int type = node.getNodeType();
>        switch (type) {
> 	case Node.DOCUMENT_NODE: {;
>                Document document = (Document)node;
>                traverse(document.getDocumentElement());
>                break;
> 	}
> 	
> 	case Node.ELEMENT_NODE: {
> 	
> 	    if(node.getNodeName().equals("")){
> 		
> 		NodeList childNodes = node.getChildNodes();
> 		
> 		break;
> 		
> 	    }
> 	}
> 	
> 	case Node.ENTITY_REFERENCE_NODE: {
> 	    Node child = node.getFirstChild();
> 	    while (child != null) {
> 		traverse(child);
> 		child = child.getNextSibling();
> 	    }
> 	    break;
> 	}
> 	
> 	case Node.CDATA_SECTION_NODE: {
> 	
> 	    // no work here
> 	    break;
> 	}
> 	
> 	}
> 	
>    }//traverse
>
>    /**
>     */
>    public void getRDFaHTML(){}//getRDFaHTML
>
> }//RDFaConsumer
>
>
>

Received on Thursday, 20 August 2009 12:16:48 UTC