Skip to content

Adaptive Content Selection #10

@AdamSobieski

Description

@AdamSobieski

Utilizing the adaptation queries syntax in an adapt attribute, Web developers could use server-side elements, client-side HTML5 custom elements, or combinations of these to simply and elegantly provide adaptive-hypermedia features for end-users.

<p>
  <asp-element:adaptive-content runat="server">
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5">
      <span>1</span>
    </content-source>
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75">
      <span>2</span>
    </content-source>
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')">
      <span>3</span>
    </content-source>
  </asp-element:adaptive-content>
</p>

For the server-side markup indicated, above, resultant content might be:

<p>
  <span>3</span>
</p>

Utilizing HTML5 custom elements, such computations could also be performed client-side.

<p>
  <adaptive-content>
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5">
      <span>1</span>
    </content-source>
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75">
      <span>2</span>
    </content-source>
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')">
      <span>3</span>
    </content-source>
  </adaptive-content>
</p>
<p>
  <adaptive-content>
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5" src="1.xml" />
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75" src="2.xml" />
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')" src="3.xml" />
  </adaptive-content>
</p>

Perhaps one could use adaptive content selection with hyperlinks to enable adaptive hyperlinks.

<a>link text
  <adaptive-attribute attribute="href">
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5" value="resource-1.html" />
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75" value="resource-2.html" />
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')" value="resource-3.html" />
  </adaptive-attribute>
</a>
<a>
  <adaptive-content>
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5">link text 1</content-source>
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75">link text 2</content-source>
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')">link text 3</content-source>
  </adaptive-content>
  <adaptive-attribute attribute="href">
    <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5" value="resource-1.html" />
    <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75" value="resource-2.html" />
    <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')" value="resource-3.html" />
  </adaptive-attribute>
</a>

Perhaps one could use a <content-reference> element to reference other elements by id.

<adaptive-content>
  <content-data>
    <p id="p1">...</p>
    <p id="p2">...</p>
    <p id="p3">...</p>
  </content-data>
  <content-source adapt="0 <= q('https://www.wikidata.org/entity/Q441') < 0.5">
    <content-reference xref="p1" />
    <content-reference xref="p2" />
    <content-reference xref="p3" />
  </content-source>
  <content-source adapt="0.5 <= q('https://www.wikidata.org/entity/Q441') < 0.75">
    <content-reference xref="p2" />
    <content-reference xref="p3" />
  </content-source>
  <content-source adapt="0.75 <= q('https://www.wikidata.org/entity/Q441')">
    <content-reference xref="p3" />
  </content-source>
</adaptive-content>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions