# Form structures

        @prefix foaf:  <http://xmlns.com/foaf/0.1/>.
        @prefix sched: <http://www.w3.org/ns/pim/schedule#>.
        @prefix cal:   <http://www.w3.org/2002/12/cal/ical#>.
        @prefix dc:    <http://purl.org/dc/elements/1.1/>.
        @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#>.
        @prefix ui:    <http://www.w3.org/ns/ui#>.
        @prefix trip:  <http://www.w3.org/ns/pim/trip#>.
        @prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
        @prefix xsd:   <http://www.w3.org/2001/XMLSchema#>.
        @prefix : <#>.

Form data | Raw data | Form
    # A simple group with two fields

    :form a ui:Group;
      ui:parts (:part1 :part2).

          :part1 a ui:SingleLineTextField ;
          ui:property vcard:fn;
          ui:label "name" .

          :part2 a ui:EmailField ;
          ui:property vcard:hasEmail; # @@ chcek
          ui:label "email" .
    :this vcard:fn "Alice";
                   vcard:hasEmail  <mailto:alice@example.com> .
    # A group with two fields and a nested subgroup

    :form a ui:Group;
      ui:parts (:nameField :emailField :addresses) .

          :nameField a ui:SingleLineTextField ;
          ui:property vcard:fn;
          ui:label "name" .

          :emailField a ui:EmailField ;
          ui:property vcard:hasEmail; # @@ chcek
          ui:label "email" .

          :addresses
              a ui:Multiple ;  # -- Allows zero or one or more
              ui:part :oneAddress ;
              ui:property vcard:hasAddress .

              :oneAddress
                  a ui:Group ;  # A subgroup of the main form
                  ui:parts ( :street :locality :postcode :region :country ).

                  :street
                      a ui:SingleLineTextField ;
                      ui:maxLength "128" ;
                      ui:property vcard:street-address ;
                      ui:size "40" .

                  :locality
                      a ui:SingleLineTextField ;
                      ui:maxLength "128" ;
                      ui:property vcard:locality ;
                      ui:size "40" .

                  :postcode
                      a ui:SingleLineTextField ;
                      ui:maxLength "25" ;
                      ui:property vcard:postal-code ;
                      ui:size "25" .

          :region
              a ui:SingleLineTextField ;
              ui:maxLength "128" ;
              ui:property vcard:region ;
              ui:size "40" .

          :country
              a ui:SingleLineTextField ;
              ui:maxLength "128" ;
              ui:property vcard:country-name ;
              ui:size "40" .
    ##### Data:

    :this vcard:fn "Alice";
       vcard:hasEmail  <mailto:alice@example.com>  ;
       vcard:hasAddress [
            vcard:street-address "111 Accacia Avennue";
            vcard:country-name "UK"
          ],
          [
             vcard:street-address "101 Autumn Ave";
             vcard:country-name "USA"
          ] .
___________