TF-RDF-XML

From RDF Working Group Wiki
Revision as of 11:19, 30 October 2012 by Fgandon (Talk | contribs)

Jump to: navigation, search

Changes from Task Force "RDF-XML"

List of the changes considered for the RDF 1.1 XML Syntax Specification.

Changes include the Errata for RDF Syntax

Change 1: typo "tiple"

status:done.

initial erratum

Syntax typo “tiple” in 7.2.11 Production nodeElement: "and the following tiple is added to the graph"

Change 2: hard coded reference to XML and Unicode versions

status: done.

initial erratum

Hard coded reference to XML 1.0 and to Unicode 3.0 are unduly restrictive. Both reference should be exchanged against a normative reference to the generically latest versions of both standards.

Change 3: signature resolve(e, s)

status: done.

initial erratum

Section 6.3.3 Grammar Action Notation of the RDF/XML Syntax Specification defines the resolve action with the signature resolve(e, s), i.e. taking two arguments, and yet we find the following:

in 7.2.11 Production nodeElement

u:=uri(identifier:=resolve(a.string-value))

in 7.2.21 Production emptyPropertyElt

u:=uri(identifier:=resolve(a.string-value))

while both should read:

u:=uri(identifier:=resolve(e, a.string-value))

Change 4: missing parent accessor

status: done.

initial erratum Section 6 of the RDF/XML Syntax Specification (Revised) says that the parent property of the element information item in the XML Infoset is required, but section 6.1.2 Element Event does not create a parent accessor for that event. Element events therefore do not have a parent accessor, and yet a parent accessor on element events is made use of in a number or sections. See the error submission for further details.

Change 5: datatyped empty literals

status: open.

inital erratum with email 1 and email 2

Serialization of datatyped empty literals is not anticipated by the RDF/XML grammar. This is believed by several developers and former WG-members to be an omission in the grammar defined by the RDF/XML Syntax Specification: a bug was reported (and acknowledged by the editor), relating to the use of an rdf:datatype attribute on empty RDF properties. See the archived mailing list thread for technical details. In addition to the question of the RDF/XML grammar's syntactic completeness, note that this issue identifies a construct that occurs within RDF graphs that cannot be serialized in the RDF/XML syntax.

current state:

Current section "7.2.16 Production literalPropertyElt" says
start-element(URI == propertyElementURIs ), attributes == set(idAttr?, datatypeAttr?))
text()
end-element()
Note that the empty literal case is defined in production emptyPropertyElt.
(...)

Current section "7.2.21 Production emptyPropertyElt" says
start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr*))
end-element()
(...)

with section "7.2.7 Production propertyAttributeURIs" specifying and
anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
(...)

with section "7.2.2 Production coreSyntaxTerms" including datatypes:
rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
(...)

proposed change:

7.2.21 Production emptyPropertyElt
start-element(URI == propertyElementURIs ),
    attributes == set(idAttr?, ( resourceAttr | nodeIdAttr | datatypeAttr)?, propertyAttr*))
end-element()


Change 6: ID and datatype exclusion on literal property

status: open.

intial mail

Concerning the RELAX NG Compact Schema for RDF/XML. The production rules only allow either an rdf:ID attribute or an rdf:datatype attribute to be specified on a literal property, but not both. This is different from the normative grammar in chapter 7. The result of following this grammar would be that triples with a datatyped literal as object cannot be reified in the normal way.

(Changes are required in the document and the linked rdfxml.rnc)


actual grammar:

literalPropertyElt =
    element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                  rdf:resource | rdf:nodeID | rdf:datatype |
                  rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix |
                  rdf:bagID | xml:* ) {
        (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text
    }

proposed change:

literalPropertyElt =
    element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
                  rdf:resource | rdf:nodeID | rdf:datatype |
                  rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix |
                  rdf:bagID | xml:* ) {
        idAttr?, datatypeAttr?, xmllang?, xmlbase?, text
    }