- From: Mark Wallace <mwallace@modusoperandi.com>
- Date: Mon, 25 Jan 2010 09:12:50 -0500
- To: Richard Light <richard@light.demon.co.uk>
- CC: Peter Ansell <ansell.peter@gmail.com>, semantic-web@w3c.org
- Message-ID: <4B5DA6E2.3050909@modusoperandi.com>
Richard Light wrote:
> In message
> <a1be7e0e1001181249t23397d9bh3259b3dbc66abfd2@mail.gmail.com>, Peter
> Ansell <ansell.peter@gmail.com> writes
>>
>> Why can't you make up a namespace prefix in the RDF/XML document that
>> hasn't been used in the turtle document or the RDF/XML document and
>> apply it to all of the null prefixed items that you get out of turtle?
>
> Neat. Thank you.
>
>> The fact that the prefix represents a namespace in Turtle has no
>> bearing on the RDF model in general, you are just lucky that the
>> RDF/XML document has support for namespaces.
>
> That bears on the whole issue of the degree of equivalence between
> Turtle/SPARQL prefixes and XML namespace prefixes. They look as
> though they do the same job, but I have been harbouring a suspicion
> that there might be differences that matter. The "null prefix" case
> seemed to me to be an example of this.
>
> You say I am "just lucky", but in fact RDF/XML itself could not work
> as currently defined without namespace support. Since predicates are
> expressed as element names in RDF/XML, and since they are URIs, the
> use of a namespace prefix is necessary for an absolute URI even to
> have a chance of being a valid XML element name. All the non-NAME
> characters can go into the namespace URI. (Personally I would prefer
> predicates to be expressed as attributes in a revised XML
> serialization of RDF, so as to remove this dependency/limitation.)
>
>> What is the advantage of doing a straight translation without
>> representing the triples in memory as abstract RDF by the way? Have
>> you tried translating the turtle document to NTriples first?
>
> This whole exercise started when a draft framework of interest to me
> (VMF [1]) was offered only in Turtle form. What started as a quick
> hack has become a reasonably serious attempt to deal with the full
> Turtle syntax.
>
Hi Richard,
Were you aware of the Jena framework's rdfcat too which can be used to
convert between a number of formats, including Turtle to RDF/XML?
E.g. using this Turtle (note the null prefix usage):
@prefix : <http://example.com/test#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:hasAge
a owl:DatatypeProperty ;
rdfs:range xsd:int .
:hasName
a owl:DatatypeProperty ;
rdfs:range xsd:string .
:Person
a owl:Class .
:Mark
a :Person ;
:hasAge "45"^^xsd:int ;
:hasName "Mark" .
You can convert using this command:
java jena.rdfcat -out xml -n x.ttl
.... which outputs this:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://example.com/test#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
<rdf:Description rdf:about="http://example.com/test#Person">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:about="http://example.com/test#hasAge">
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
</rdf:Description>
<rdf:Description rdf:about="http://example.com/test#hasName">
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</rdf:Description>
<rdf:Description rdf:about="http://example.com/test#Mark">
<rdf:type rdf:resource="http://example.com/test#Person"/>
<hasAge
rdf:datatype="http://www.w3.org/2001/XMLSchema#int">45</hasAge>
<hasName>Mark</hasName>
</rdf:Description>
</rdf:RDF>
It can convert to other formats as well: RDF/XML Abbreviated format,
N-Triples, N3.
-Mark
Mark Wallace
Principal Engineer, Semantic Applications
Modus Operandi, Melbourne, FL, USA
> I didn't see any value in going via intermediate forms, since my aim
> was to get machine-processible XML to drop into a triple store. I
> could have done this job more easily with a custom XML target format,
> but I wanted to improve my understanding of RDF/XML, and also to
> produce something which might be of use to others. In fact I load the
> parsed data directly into an XML DOM, and just serialize it when
> parsing is completed. An extension which would be easy to add would
> be to apply a user-supplied XSLT transform to this document, allowing
> output in any required format.
>
> A couple of points about Turtle also dropped out of this exercise.
> First, a literal-minded reading of the EBNF spec would suggest that
> white space is only allowed where specified. There ought to be a
> statement somewhere that white space is allowed freely between tokens
> (or did I miss it?). Second, the Turtle VMF resource didn't use UTF-8
> encoding (accented characters were in ISO-8859-1), and despite this it
> imported without problems into Protege 4. This in turn suggests that
> Protege's Turtle support doesn't deal correctly with encoding issues.
>
>> Would the following do what you want?
>>
>> <rdf:Description rdf:about="http://example.org/a1"><a2
>> xmlns="http://example.org/"
>> rdf:resource="http://example.org/a3"/></rdf:Description>
>
> Only if the rdf:resource is an absolute URI, I think.
>
> Richard
>
> [1] http://cdlr.strath.ac.uk/VMF/
Received on Wednesday, 27 January 2010 10:05:45 UTC