Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "View-builder vocabulary"
(→UML Overview) |
(→Attributes) |
||
Line 55: | Line 55: | ||
===settingsViewRoot=== | ===settingsViewRoot=== | ||
Link to the (settings) root of the tree of Groups, Frames and Slots (aka ViewNodes) | Link to the (settings) root of the tree of Groups, Frames and Slots (aka ViewNodes) | ||
− | * domain: | + | * domain: ctxt:Context |
* range: Group | * range: Group | ||
===viewRoot=== | ===viewRoot=== | ||
Link to the (regular) root of the tree of Groups, Frames and Slots (aka ViewNodes) | Link to the (regular) root of the tree of Groups, Frames and Slots (aka ViewNodes) | ||
− | * domain: | + | * domain: ctxt:Context |
* range: Group | * range: Group | ||
Revision as of 15:25, 22 June 2011
{{#eclipseproject:technology.higgins|eclipse_custom_style.css}}Vocabulary to describe a view of a context. A view is a tree structure of groups of attributes to be displayed/edited. Part of the Persona Data Model 2.0.
Contents
Files
- Most recently published
- SVN source: view-builder.n3
UML Overview
Classes
Group
A logical group of Slots and/or sub-Groups
- subClassOf: ViewNode
- 0..N field
- 0..N subgroup
Slot
Metadata about how an attribute from the Persona vocabulary (or one of its imports) or from the Flat Persona vocabulary or from the rdf (e.g. rdf:class) should be presented
- subClassOf: ViewNode
- 1..1 attribute
ViewNode
Metadata about how an attribute from the Persona vocabulary (or one of its imports) or from the Flat Persona vocabulary or from the rdf (e.g. rdf:class) should be presented
- 1..1 attribute
- 1..1 displayOrder
- 1..1 skos:prefLabel
- 0..1 layout
Attributes
attribute
The attribute that should be displayed in this field. The attribute may be in the Flat Persona vocabulary or in the Persona vocabulary (or one of its imported sub-vocabularies).
- domain: Slot or Frame
- value: rdf:Property
child
A frame child of a Group
- domain: Group or Frame
- value: ViewNode
displayOrder
A number that indicates the relative position with respect to the displayOrder of sibling objects with this same attribute. Lower numbers indicate precedence. The displayOrder values of all child nodes of a given node in the tree should be considered together irrespective of the class of the child (i.e. Slot, Group or Frame).
- domain: Slot, Frame or Group
- value: xsd:Integer
layout
An optional URL of an html/javascript template sub-page of a web app
- domain: ViewNode
- value: URI
settingsViewRoot
Link to the (settings) root of the tree of Groups, Frames and Slots (aka ViewNodes)
- domain: ctxt:Context
- range: Group
viewRoot
Link to the (regular) root of the tree of Groups, Frames and Slots (aka ViewNodes)
- domain: ctxt:Context
- range: Group
Value range constraints
In some cases the UI/presentation needs to restrict the possible values of an attribute further than how the attribute class constrains its values (if it does at all). The view-builder context is a convenient place to add these additional constraints. For example whereas fp:gender does not constraint its values (because it is just an alias for foaf:gender which doesn't constraint its values), we might in a UI wish to add this statement:
fp:gender rdfs:range [ rdf:type rdfs:Datatype ; owl:oneOf ("female"^^xsd:string "male"^^xsd:string "unspecified"^^xsd:string) ] .
Example
Here is an example of a view-builder:
:AgeRange rdf:type view:Slot ; view:attribute fp:ageRange ; view:displayOrder 1 ; skos:prefLabel "Age range"^^xsd:string . :DemographicsGroup rdf:type view:Group ; view:child :PostalCode , :AgeRange , :Gender ; view:displayOrder 1 ; skos:prefLabel "Demographics"^^xsd:string . :Gender rdf:type view:Slot ; view:attribute fp:gender ; view:displayOrder 2 ; skos:prefLabel "Gender"^^xsd:string . :Interest rdf:type view:Slot ; view:attribute <http://www.eclipse.org/higgins/ontologies/2010/6/online-behavior#interest> ; view:displayOrder 1 ; skos:prefLabel "Interest"^^xsd:string . :InterestsGroup rdf:type view:Group ; view:child :Interest ; view:displayOrder 2 ; skos:prefLabel "Interests"^^xsd:string . :PostalCode rdf:type view:Slot ; view:attribute fp:postalCode ; view:displayOrder 10 ; skos:prefLabel "Zip code"^^xsd:string . :ViewRoot rdf:type view:Group ; view:child :InterestsGroup , :DemographicsGroup ; view:displayOrder 1 ; skos:prefLabel "Advertising Profile"^^xsd:string . fp:gender rdfs:range [ rdf:type rdfs:Datatype ; owl:oneOf ("female"^^xsd:string "male"^^xsd:string "unspecified"^^xsd:string) ] . view:ViewNode rdfs:subClassOf [ rdf:type owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty skos:prefLabel ] .
Here is a visual representation:
The demographics group shown above has slots whose attributes, fp:gender, fp:ageRange, fp:postalCode, are all from the Flat Persona vocabulary.
The interests group shown above has a slot whose attribute is the complex valued attribute, online-behavior:interest. In this rather special case the presentation logic should render the name of the class of the instance (e.g. "Humor > Satire" or "World Destinations > Africa > East Africa > Nigeria") as opposed to rendering the value of an attribute of the instance as is done in the usual case.
A few additional notes on the above example
The FlatPersona namespace is only useful when either (a) there are not multiple entity values of the same attribute being requested, or, (b) there are just a few alternative entities and the "right" one can be figured out by matching using the role tags (e.g. "home" vCard entity vs. "work" vCard entity). Flattening, a simplification. It is an attempt to hide some complexity. But there are times when we can't hide the complexity. Multiple non-role-tagged entity values of an attribute is one of those times.
Displaying the "interests" of a user is a case where the flat persona approach won't work because a single p:Person node has a multi-valued (multi-entity-valued) "online-behavior:interest" attribute. You'll notice in the view hierarchy under the interests Group there is a Slot whose view:attribute attribute whose value is <http://www.eclipse.org/higgins/ontologies/2010/6/online-behavior#interest>--a value that is from the persona vocabulary (well, the online-behavior sub-vocabulary) and NOT from the flat persona vocabulary. We have to get all of the values of this attribute. These values are (multiple) online-behavior:InterestTopic-class entities. The specific class of this InterestTopic might be "Satire", but of course we probably want to display something like "Humor > Satire" --in other words rendering not just the "leaf" class name but where it sits in relation to the (up to 6 levels) of super-classes ("Humor" being the super-class of "Satire" in this case).