[isidorus-cvs] r94 - trunk/docs

Lukas Giessmann lgiessmann at common-lisp.net
Sun Jul 19 18:42:47 UTC 2009


Author: lgiessmann
Date: Sun Jul 19 14:42:47 2009
New Revision: 94

Log:
finalized the JSON ebnf schema

Modified:
   trunk/docs/json.ebnf

Modified: trunk/docs/json.ebnf
==============================================================================
--- trunk/docs/json.ebnf	(original)
+++ trunk/docs/json.ebnf	Sun Jul 19 14:42:47 2009
@@ -11,7 +11,7 @@
 //+ Part 1: Basic elements
 //+-----------------------------------------------------------------------------
 
-Char = "a" | "b" | ... | "A" | "B" | "0" | "1" | ...
+Char = "a" | "b" | ... | "A" | "B" | ... | "0" | "1" | ... | "-" | "_" | ...
 String = "\"" char* "\""
 Null = "\"null\""
 List = "[" string ("," string)* "]"
@@ -25,6 +25,10 @@
 
 //+-----------------------------------------------------------------------------
 //+ Part 2: XTM - data model
+//+ A fragment contains a valid but incomplete topic map with one main topic
+//+ all referenced associations and all referenced topic stubs.
+//+ The schema is close to XTM 2.0 with the difference that referencing topics
+//+ is done via their PSIs, so a reference is always a list of PSIs.
 //+-----------------------------------------------------------------------------
 Datatype = "\"datatype\":" String
 Value = "\"value\":" String
@@ -68,6 +72,10 @@
 
 //+-----------------------------------------------------------------------------
 //+ Part 3: Object summaries
+//+ These Summaries are necessary to offer information of existing topics in the
+//+ store. A PsiSummary contains a list of PSI lists, so the client is able to
+//+ find out all existing topics. The TreeView contains a hierarchical
+//+ map of the stored Topics.
 //+-----------------------------------------------------------------------------
 PsiSummary = DblList | Null
 
@@ -85,7 +93,7 @@
 Instances = "\"instances\":" (("[" TreeNode "]") | Null)
 
 TreeNode = "{" TopicList "," isType "," isInstance "," Instances "}"
-
+TreeView = ("[" TreeNode+ "]") | Null
 
 //+-----------------------------------------------------------------------------
 //+ Part 4: TMCL - data model
@@ -94,27 +102,77 @@
 CardMax = "\"cardMax\":" ENumber
 RegExp = "\"regexp\":" String
 
-ExclusiveInstance = "{\"owner\":" List ",\"exclisives\":" (DblList | Null) "}"
 SimpleConstraint = "{" RegExp "," CardMin "," CardMax "}"
 Constraints = "\"constraints\":[" SimpleConstraint+ "]"
 
-
+// Contains the owner instances and all topic types that are defined
+// es exclusives for the owner type
+ExclusiveInstances = "\"exclusiveInstances\":{\"owner\":" List
+                     ",\"exclisives\":" (DblList | Null) "}"
+
+// Contains a list of constraints that offer information about
+// the regular expressions and cardinalities for subjectIdentifiers
+// or subjectLocators
+SubjectIdentifierConstraints = "\"subjectIdentifierConstraints\":" (Constraints | Null)
+SubjectLocatorConstraints = "\"subjectLocatorConstraints\":" (Constraints | Null)
+
+// Offers scope information. The ScopeType contains a representation of all
+// available scopes and their subtys. Further constructs describe the
+// cardinalities
 ScopeType = "\"scopeTypes\":" TrpList
 ScopeConstraint = "{" ScopeType "," CardMin "," CardMax "}"
 ScopeConstraints = "\"scopeConstraints\":" (("[" scopeConstraint "]") | Null)
 
+// Describes a name constraint for a nametype and its subtypes.
 NameTypeScope = "{\"nameType\":" List "," scopeConstraints "}"
 NameTypeScopes = "\"nametypescopes\":[" NameTypeScope+ "]"
 TopicNameConstraint = "{" NameTypeScopes "," Constraints "}"
+TopicNameConstraints "\"topicNameConstraints\":" (("[" TopicNameConstraint+ "]") | Null)
 
+// Describes an occurrence constraint for an occurencetype and its subtypes.
 UniqueConstraints = "\"uniqeConstraints\":[" SimpleConstraint+ "]"
 DatatypeConstraint = "\"datatypeConstraint\":" String
 OccurrenceTypeScope = "{\"occurrenceType\":" List "," scopeConstraints ","
                       DatatypeConstraint "}"
 OccurrenceTypeScopes = "\"occurrenceTypes\":[" OccurrenceTypeScope+ "]"
-TopicOccurrenceConstraint = "{" OccurrenceTyoeScopes "," Constraints ","
+TopicOccurrenceConstraint = "{" OccurrenceTypeScopes "," Constraints ","
                             UniqueConstraints "}"
+TopicOccurrenceConstraints = "\"topicOccurrenceConstraints\":"
+                             (("[" TopicOccurrenceConstraints+ "]") | Null)
+
+// Contains all constraints that depends on a topic
+TopicConstraint = "{" ExclusiveInstances "," SubjectIdentifierConstraints ","
+                  SubjectLocatorConstraints "," TopicNameConstraints ","
+                  TopicOccurrenceConstraints "," AbstractConstraint "}"
+
+// Describes an associationrole-constraint
+RoleType = "\"roleType\":" DblList
+ARC = "{" RoleType "," cardMin "," cardMax "}"
+ARCs = "\"AssociationRoleConstraints\":" (("[" ARC+ "]") | Null)
+
+// Describes a roleplayer-constraint and also contains all possible
+// players.
+PlayerType = "\"playerType\":" DblList
+Players = "\"players\":" DblList
+RPC = "{" playerType "," Players "," RoleType "," cardMin "," cardMax "}"
+RPCs = "\"rolePlayerConstraints\":" (("[" RPC+ "]") | Null)
+
+// Describes an otherrole-constraint and also contains all possible
+// players and otherplayers.
+OtherRoleType = "\"otherRoleType\":" DblList
+OtherPlayerType = "\"otherPlayewrType\":" DblList
+OtherPlayers = "\"otherPlayers\":" DblList
+ORC = "{" PlayerType "," Players "," RoleType "," OtherPlayerType ","
+      OtherPlayers "," OtherRoleType "," cardMin "," cardMax "}"
+ORCs "\"otehrRoleConstraints\":" (("[" ORC+ "]") | Null)
+
+// Describes all constraints of all associations depending to the topic
+AssocType = "\"associationType\":" List
+AConstraints = "{" AssocType "," ARCs "," RPCs "," ORCs "," ScopeConstraints "}"
+AssociationsConstraints "\"associationsConstraints\":" (("[" AConstraints+ "]") | Null)
 
+// Contains the entire TMCL information
+FragmentConstraint ="{" TopicConstraints "," AssociationsConstraints "}"
 //+-----------------------------------------------------------------------------
 //+ Part 5: Server-side RESTful interface
 //+-----------------------------------------------------------------------------
@@ -122,9 +180,9 @@
 "/json/commit/?$" processes a Fragment as HTTP-POST or HTTP-PUT
 "/json/psis/?$" returns a PsiSummary after a HTTP-GET
 "/json/summary/?$" returns a TopicSummaries after A HTTP-GET
-"/json/tmcl/types/?$"
-"/json/tmcl/instances/?$"
-"/json/topicstubs/(.+)$"
-"/json/tmcl/type/?$"
-"/json/tmcl/instance/?$"
-"/json/tmcl/overview/?$"
\ No newline at end of file
+"/json/tmcl/types/?$" returns a PsiSummary after A HTTP-GET with all types
+"/json/tmcl/instances/?$" returns a PsiSummary after a HTTP-GET with all instances
+"/json/topicstubs/(.+)$" returns a topicStub after a HTTP-GET
+"/json/tmcl/type/?$" returns a FragmentConstraint after a HTTP-POST/HTTP-PUT
+"/json/tmcl/instance/?$" returns a FragmentConstraint after a HTTP-POST/HTTP-PUT
+"/json/tmcl/overview/?$" returns a TreeView after a HTTP-GET
\ No newline at end of file




More information about the Isidorus-cvs mailing list