// Extension of object_diagram vocabulary
vocabulary <http://flandersmake.be/cdf/vocabulary/dict#> as dict {
	
	extends <http://flandersmake.be/cdf/vocabulary/object_diagram#> as object_diagram
	extends <http://www.w3.org/2001/XMLSchema#> as xsd

	aspect Object []
	
	// In many vocabularies, we want to have "dictionaries" (key-value mappings).
	// We choose to represent every dictionary entry by an 'Object', that has a 'key' and 'value' field
	aspect DictEntry :> Object [
		restricts scalar property hasKey to exactly 1
		restricts scalar property hasValue to exactly 1
	]
	scalar property hasKey :> object_diagram:hasField [
		domain DictEntry
		range xsd:string
		functional
	]
	scalar property hasValue :> object_diagram:hasField [
		domain DictEntry
		range xsd:string
		functional
	]
}