2014-10-29 6 views
5

Supponiamo di avere il seguente JSON:In JSON-LD, è possibile definire un mapping URI per un valore di proprietà?

{ 
    "@context": 
    { 
    "name": "http://schema.org/name", 
    "status": "http://schema.org/status" 
    }, 
    "name": "Manu Sporny", 
    "status": "trollin'" 
} 

(JSON-LD Playground)

Diciamo che abbiamo un URI per lo stato trollin': http://example.com/trolling.

È possibile mappare la parola chiave trollin' all'URI?

Qualcosa semplice non funzionerà:

{ 
    "@context": 
    { 
    "name": "http://schema.org/name", 
    "status": "http://schema.org/status", 
    "trollin'": "http://example.com/trolling" 
    }, 
    "name": "Manu Sporny", 
    "status": "trollin'" 
} 

(JSON Playground)

Forzare il tipo di status a @id anche non funzionerà, perché assumerà trollin' è un URI relativo.

{ 
    "@context": 
    { 
    "name": "http://schema.org/name", 
    "status": { 
     "@id": "http://schema.org/status", 
     "@type": "@id" 
    }, 
    "trollin'": "http://example.com/trolling" 
    }, 
    "name": "Manu Sporny", 
    "status": "trollin'" 
} 

(JSON-LD Playground)

risposta

4

Sì, si può fare, è necessario impostare il tipo di stato per @vocab:

{ 
    "@context": 
    { 
    "name": "http://schema.org/name", 
    "status": { 
     "@id": "http://schema.org/status", 
     "@type": "@vocab" 
    }, 
    "trollin'": "http://example.com/trolling" 
    }, 
    "name": "Manu Sporny", 
    "status": "trollin'" 
} 

Ecco un link al parco giochi.

+2

Dove è questo '{" @ tipo ":" @vocab "}' descritto? Non riesco a trovarlo da nessuna parte nelle [specifiche ufficiali JSON-LD] (http://www.w3.org/TR/json-ld/). UPDATE: l'ho trovato: http://lists.w3.org/Archives/Public/public-hydra/2014Sep/0029.html > Dopo qualche discussione con Gregg che mi ha indirizzato a http: // www. w3.org/TR/json-ld-api/#value-expansion, questo è il risultato. > La parola chiave @vocab ha un secondo significato che non è menzionato nello spec. Json-ld , solo nell'api. Se utilizzato come valore di @type nel contesto , il valore dell'attributo corrispondente deve essere espanso in un IRI. –

+1

Curioso ... perché non è mai menzionato nelle specifiche JSON-LD? Inoltre ... la specifica API JSON-LD è _very_criptico (vero stile RDF), non riesco a trovare esattamente dove questo '{@ 'tipo": "@vocab"} 'costrutto è descritto ... –

Problemi correlati