Re: Prefix or term definition?

On Oct 5, 2011, at 9:18 AM, Markus Lanthaler wrote:

I'm not sure if this is an issue, but currently there's no way to specify if
a mapping in the context is for a prefix or a term. So, what would be the
result of this (admittedly silly) example.

 "@context": { "payment": "" },
 "payment:payment": "done",
 "payment:amount": 20.4

Assuming that I interpret the spec correctly I would expect the following:

<> "done"
<> "20.4"^^xsd:double

The wording in the spec is confusing and inaccurate:

A prefix is a compact way of expressing a base IRI<> to a Web Vocabulary<>. Generally, these prefixes are used by concatenating theprefix and a term separated by a colon (:). The prefix is a short string that identifies a particular Web vocabulary. For example, the prefix foaf may be used as a short hand for the Friend-of-a-Friend Web Vocabulary, which is identified using the IRI A developer may append any of the FOAF Vocabulary terms to the end of the prefix to specify a short-hand version of the full IRI for the vocabulary term. For example, foaf:name would be expanded out to the IRI Instead of having to remember and type out the entire IRI, the developer can instead use the prefix in their JSON-LD markup.

It should say "concatentating the prefix and suffix separated by a colon (:)." If a key matches a production containing NCNAME ':' followed by anything else, and the NCNAME portion (prefix) matches a defined term, the prefix ':' combination is replaced by the value of the term definition. In these examples, you should get the following:

<> <> "done" .
<> <> "20.4"^^xsd:double .

The only portion of the key subject to term replacement is the prefix, everything after the colon is used without performing any substitution.


Markus Lanthaler

Received on Wednesday, 5 October 2011 17:05:36 UTC