// Extension of object_diagram vocabulary
vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict {
	
	extends <http://ua.be/sdo2l/vocabulary/formalisms/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 hasKey to exactly 1
		restricts  hasValue to exactly 1
	]
	scalar property hasKey [
		domain DictEntry
		range xsd:string
	    functional
	]< object_diagram:hasField 
	scalar property hasValue  [
		domain DictEntry
		range xsd:string
		functional
	]< object_diagram:hasField
}