80 likes | 195 Views
ISSUE-94. Objects. Six options have been discussed. Annotate, in the RIF document, the attribute as single-valued, e.g. using RIF meta-data construct;
E N D
ISSUE-94 Objects
Six options have been discussed • Annotate, in the RIF document, the attribute as single-valued, e.g. using RIF meta-data construct; • Modify the Frame construct, so that the multiplicity of an attribute is indicated explicitly, e.g. adding a "cardinality" attribute to the <slot> element; • Specify a new construct, specific to the case of single valued attributes (that is, with multiplicity = 1), keeping the Frame construct unchanged (that is the multiplicity of attributes is 0..*). E.g. csma's proposal to introduce a new basic term to represent the value of a single valued attribute; • Leave attribute multiplicity implicit in condition formulas and rely on RIF document analysis to determine attributes multiplicity: the only attributes that need be modelled as single valued are those of Frames that appear in assertions with replacement semantics, in the conclusion of at least one rule • Rely on out-of-band information (e.g. interchange of the intended data model, in parallel to the RIF document) to determine the multiplicity of Frames' attributes; • Add syntax to declare the multiplicity (and type?) of frame slots in a RIF document
1. Annotate, in the RIF document, the attribute as single-valued, e.g. using RIF meta-data construct; <Frame> <object>…</object> <slot rif:ordered=‘yes’> <Const type=‘rif:iri’> <id><Const type=‘rif:local’>example1</Const></id> <meta><Frame> <object> <Const type=‘rif:local’>example1</Const> </object> <slot rif:ordered=‘yes> <Const type=‘rif:iri’>rif:multiplicity</Const> <Const type=‘rif:multiplicity’>one</Const> </slot> </Frame> </meta> my:slot </Const> slot value </slot> </Frame>
2. Modify the Frame construct, so that the multiplicity of an attribute is indicated explicitly, e.g. adding a "cardinality" attribute to the <slot> element <Frame> <object>…</object> <slot rif:ordered=‘yes’ rif:multiplicity=‘one’> <Const type=‘rif:iri’> my:slot </Const> slot value </slot> </Frame>
3. Specify a new construct, specific to the case of single valued attributes TERM ::= IRIMETA? (Const | Var | 'External' '(' Expr ')' | Getter) Getter ::= TERM '.' (Const | Expr) <Getter> <object> … </object> <member> <Const type=‘rif:iri’>my:slot</Const> </member> </Getter>
4. Leave attribute multiplicity implicit in condition formulas and rely on RIF document analysis to determine attributes multiplicity <Implies> <if> <Frame> <object><Var>?x</Var></object> <slot rif:ordered=‘yes’> <Const type=‘rif:iri’>my:slot</Const> slot value </slot> </Frame> </if> <then> <Do> <Modify> <target> <Frame> <object><Var>?x</Var></object> <slot rif:ordered=‘yes’> <Const type=‘rif:iri’>my:slot</Const> new slot value </slot> </Frame> </target> </Modify> </Do> </then> </Implies>
5. Rely on out-of-band information <Import> <schema-location rif:prefix=‘exsd’>…</schema-location> </Import> … <Forall> <declare><Var>?x</Var></declare> <pattern> <And><Member> <object><Var>?x</Var></object> <class><Const type=‘rif:iri’>exsd:foo</Const></class> </Member> <Frame> <object><Var>?x</Var></object> <slot rif:ordered=‘yes’> <Const type=‘rif:iri’>exsd:bar</Const> slot value </slot> </Frame> </And> </pattern> … </Forall>
6. Add syntax to declare the multiplicity (and type?) of frame slots in a RIF document Class eg:MyClass [ eg:att_1->singleton (xs:string), eg:att_2->set (xs:date) ]