Thanks for your explanation Josh and Andy. Thanks, Rodrigo.
-----Original Message----- From: Joshua TAYLOR [mailto:[email protected]] Sent: Wednesday, March 27, 2013 4:53 PM To: [email protected] Subject: Re: RDF Model Namespaces On Wed, Mar 27, 2013 at 4:32 PM, Pastrana, Rodrigo (RIS-BCT) <[email protected]> wrote: >> You claim it's illegal. Why? > Did I? I pointed out the scenario, and asked if Jena's API can help handle it. > Are you claiming the "congress people" RDF/XML graph is illegal? I'd guess Andy meant where you wrote "Because the com.hp.hpl.jena.rdf.model.Resource.getNameSpace() will potentially return invalid namespaces (if the name starts with a numeral or contains a dot)." That's not all that relevant though. There's not illegal about the congress people RDF/XML graph. RDF is defined in terms of IRIs, and RDF can be serialized in a number of formats. Some of those formats provide convenient ways to write IRIs in shortened form, but also rule out writing certain of the IRIs in shortened form. Some of the IRIs in the congress people graph can't be written in the shortened form. It doesn't make the graph illegal in any sense, and it doesn't even mean that the graph can't be serialized in RDF/XML; it only means that not every IRI in the graph can be written in the XML qname format. > Doesn't really matter, what matters is this scenario will play out in many > RDF/XML graphs. > We want to use JENA, but we have to be able to support RDF/XML graphs such as > the congress people... Jena supports RDF/XML, and you'll be able to use Jena to work with that graph. You won't be able to access everything though XML qnames, though. That's not uncommon, and it's not really a problem. Here's example of Jena code that works with a graph containing the triple you mentioned above. It shows the behavior you've described (i.e., getLocalName returning "") as well as some serializations of the model. The fact that certain IRIs can't be represented in the XML Qname syntax doesn't keep them from being used in RDF graphs, or even from being serialized in RDF/XML. import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.vocabulary.RDF; public class Congress { public static void main(String[] args) { Model model = ModelFactory.createDefaultModel(); Resource wilson = model.createResource( "http://www.rdfabout.com/rdf/usgov/congress/people/412360" ); Resource foafPerson = model.createResource( "http://xmlns.com/foaf/0.1/Person" ); model.add( wilson, RDF.type, foafPerson ); for ( Resource r : new Resource[] { wilson, foafPerson } ) { System.out.println( "namespace: '" + r.getNameSpace() + "'; localname: '"+r.getLocalName()+"'" );; } for ( String format : new String[] { "RDF/XML", "RDF/XML-ABBREV", "TTL" } ) { System.out.println( "\n== "+format+" ==" ); model.write( System.out, format ); } } } Output: namespace: 'http://www.rdfabout.com/rdf/usgov/congress/people/412360'; localname: '' namespace: 'http://xmlns.com/foaf/0.1/'; localname: 'Person' == RDF/XML == <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:j.0="http://xmlns.com/foaf/0.1/" > <rdf:Description rdf:about="http://www.rdfabout.com/rdf/usgov/congress/people/412360"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/> </rdf:Description> </rdf:RDF> == RDF/XML-ABBREV == <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:j.0="http://xmlns.com/foaf/0.1/"> <j.0:Person rdf:about="http://www.rdfabout.com/rdf/usgov/congress/people/412360"/> </rdf:RDF> == TTL == <http://www.rdfabout.com/rdf/usgov/congress/people/412360> a <http://xmlns.com/foaf/0.1/Person> . -- Joshua Taylor, http://www.cs.rpi.edu/~tayloj/ ----------------------------------------- The information contained in this e-mail message is intended only for the personal and confidential use of the recipient(s) named above. This message may be an attorney-client communication and/or work product and as such is privileged and confidential. If the reader of this message is not the intended recipient or an agent responsible for delivering it to the intended recipient, you are hereby notified that you have received this document in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail, and delete the original message.
