Skip to content

Clipboarding and Multipart MIME #247

@AdamSobieski

Description

@AdamSobieski

Introduction

Multipart MIME messages could be of use for data transfer, clipboarding, and drag-and-drop scenarios.

Using multipart MIME messages, thusly, one could use RDF-based and linked-data formats to express metadata describing and interrelating messages' parts, utilizing RFC 2392 URL schemes (mid:, cid:).

Click here to toggle view of the first example.
Mime-Version: 1.0
Message-ID: <12345678>
Content-Type: multipart/related; boundary="boundary-example"
Content-Metadata: <part1>

--boundary-example

Content-ID: <part1>
Content-Type: text/turtle

@prefix dc: <https://umn7fc98gj7rc.julianrbryant.com/dc/terms/> .
@prefix ex: <https://umn4kq9urycymemmv4.julianrbryant.com/> .

<mid:12345678> dc:hasPart <cid:part1>, <cid:part2>, <cid:part3> ;
  ex:hasPayload <cid:part2> .
<cid:part2> dc:references <cid:part3> .

--boundary-example

Content-ID: <part2>
Content-Type: text/plain
Content-Language: en

Climate change is caused by human activities. Therefore, we should reduce carbon emissions.

--boundary-example

Content-ID: <part3>
Content-Type: text/x-bibtex

@book{archer2010climate,
  title={The climate crisis: An introductory guide to climate change},
  author={Archer, David and Rahmstorf, Stefan},
  year={2010},
  publisher={Cambridge University Press}
}

--boundary-example--
Click here to toggle view of the second example.
Mime-Version: 1.0
Message-ID: <12345678>
Content-Type: multipart/related; boundary="boundary-example"
Content-Metadata: <part1>

--boundary-example

Content-ID: <part1>
Content-Type: text/turtle

@prefix dc: <https://umn7fc98gj7rc.julianrbryant.com/dc/terms/> .
@prefix foaf: <https://umnb22h859c0.julianrbryant.com/foaf/0.1/> .
@prefix ex: <https://umn4kq9urycymemmv4.julianrbryant.com/>.

<mid:12345678> dc:created "2025-06-29 20:00:00.000" ;
    dc:creator [ a foaf:Person ;
            foaf:name "Bob Smith" ] ;
    dc:hasPart <cid:part1>,
        <cid:part2>,
        <cid:part3> ;
    ex:hasPayload <cid:part2> .

<cid:part2> dc:hasPart <cid:part2_1>,
        <cid:part2_2>,
        <cid:part2_3> .

<cid:part2_1> dc:isFormatOf <cid:part2_2> ;
    dc:isFormatOf <cid:part2_3> .

<cid:part2_2> dc:isFormatOf <cid:part2_1> ;
    dc:isFormatOf <cid:part2_3> ;
    dc:references <cid:part3> .

<cid:part2_3> dc:isFormatOf <cid:part2_1> ;
    dc:isFormatOf <cid:part2_2> ;
    dc:references <cid:part3> .

--boundary-example

Content-ID: <part2>
Content-Type: multipart/alternative; boundary="nested-boundary"

--nested-boundary

Content-ID: <part2_1>
Content-Type: text/plain
Content-Language: en

Climate change is caused by human activities. Therefore, we should reduce carbon emissions.

--nested-boundary

Content-ID: <part2_2>
Content-Type: application/xml
Content-Language: en

<p><evidence href='cid:part5'>Climate change is caused by human activities.</evidence>
Therefore, we should reduce carbon emissions.</p>

--nested-boundary

Content-ID: <part2_3>
Content-Type: text/turtle
Content-Language: en

@prefix aif: <https://umn0mtkzgkn8cen60aadp9q51em68gr.julianrbryant.com/aif#> .
@prefix ex: <https://umn4kq9urycymemmv4.julianrbryant.com/#> .
@prefix ext: <https://umn4kqbv5b7d6zm5.julianrbryant.com/#> .

ex:Node1 a aif:I-node ;
    aif:claimText "Climate change is caused by human activities." .

ex:Node2 a aif:RA-node ;
    aif:hasPremise ex:Node1 ;
    aif:hasConclusion ex:Node3 .

ex:Node3 a aif:I-node ;
    aif:claimText "We should reduce carbon emissions." .

ex:Node4 a ext:E-node ;
    ext:hasEvidence <cid:part5> .

ex:Node5 a ext:ES-node ;
    ext:supported ex:Node1 ;
    ext:supportedBy ex:Node4 .

--nested-boundary--

--boundary-example

Content-ID: <part3>
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Language: en
Content-Disposition: attachment; filename="evidence.xslx"
Content-Transfer-Encoding: base64

TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4g
U2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuCg==

--boundary-example--

Securing Interprocess Messages and Communication

Techniques for securing multipart MIME messages (e.g., S/MIME, multipart/signed, and multipart/encrypted) could be of use with multipart MIME messages for data transfer, clipboarding, and drag-and-drop scenarios.

Metadata from or about components of an interprocess communication messaging event:

  1. operating systems
  2. end-users
    1. system-level configurations and settings
    2. system-level authorizations and permissions
    3. application-level configurations and settings
    4. application-level authorizations and permissions
  3. software applications
    1. interprocess communication message sources
      1. UI elements and components
    2. interprocess communication message recipients
      1. UI elements and components
    3. applications' manufacturers, names, versions, tags, categories, groups, roles, and tasks
  4. that data and content to be sent in a message

could be combined together into interprocess communication contexts. These contexts could be of use for securing interprocess communication including by enabling constraints to be expressed with respect to them.

Using constraints, candidate interprocess communication contexts (messages' potential recipients varying during gestures) could be validated by operating systems and/or software applications, including Web browsers, before and during interprocess communication messaging events. Constraints on contexts could be of use for determining which software applications could view, peek the metadata of, and subsequently receive a message from a data transfer, clipboarding, or drag-and-drop operation. Constraints could be declared by, could originate from, those same components of interprocess communication messaging events listed above.

Using RDF-based metadata, messages could contain one or more SPARQL ASK queries which must be true when applied to a context's metadata for that context to be validated.

Click here to toggle view of the third example.
Mime-Version: 1.0
Message-ID: <12345678>
Content-Type: multipart/related; boundary="boundary-example"
Content-Metadata: <part1>

--boundary-example

Content-ID: <part1>
Content-Type: text/turtle

@prefix dc: <https://umn7fc98gj7rc.julianrbryant.com/dc/terms/> .
@prefix ex: <https://umn4kq9urycymemmv4.julianrbryant.com/> .

<mid:12345678> dc:hasPart <cid:part1>, <cid:part2>, <cid:part3> ;
  ex:hasPayload <cid:part2> ;
  ex:hasContextConstraint <cid:part4> .

<cid:part2> dc:references <cid:part3> .

--boundary-example

Content-ID: <part2>
Content-Type: text/plain
Content-Language: en

Climate change is caused by human activities. Therefore, we should reduce carbon emissions.

--boundary-example

Content-ID: <part3>
Content-Type: text/x-bibtex

@book{archer2010climate,
  title={The climate crisis: An introductory guide to climate change},
  author={Archer, David and Rahmstorf, Stefan},
  year={2010},
  publisher={Cambridge University Press}
}

--boundary-example

Content-ID: <part4>
Content-Type: application/sparql-query

PREFIX rdf: <https://umn0mtkzgkj46tygt32g.julianrbryant.com/1999/02/22-rdf-syntax-ns#>
PREFIX ex: <https://umn4kq9urycymemmv4.julianrbryant.com/>

ASK
WHERE {
  ?context ex:hasRecipient ?recipient .
  ?recipient rdf:type ex:SoftwareApplication, ex:WordProcessor .
}

--boundary-example--

User Experience Considerations

There could be different types of constraints, some invalidating a data-transfer event if they aren't met, and others indicating or recommending a user-permission request, perhaps including a natural-language explanation to the end-user if they aren't met.

Should a message's data-related or content-related metadata (list item 4, above) indicate that its data or contents were special, in some way, the completion of the data transfer, clipboarding, or drag-and-drop gesture could involve a permission request or verification from the end-user performing the gesture. This could contribute to mitigating user error.

Use Cases

Scholarly and Scientific Bibliographic Provenance

Multipart MIME messages for clipboarding and drag-and-drop would allow end-users to be able to copy-and-paste and drag-and-drop from scholarly and scientific publications and to receive conveniences from features including options for automatically adding bibliographic references to their documents upon pasting or dropping content.

AI Content Disclosure

Multipart MIME messages for clipboarding and drag-and-drop would enable AI content disclosure scenarios. Data-transfer content could indicate that it was generated or modified by an AI system for purposes including so that resultant user-edited documents could disclose that specific parts or their entireties were generated or significantly modified by AI technologies.

With respect to AI content disclosure, the text/x-bibtex type of @misc can be used for referring to (man-machine) conversations and correspondences, both unpublished ones and ones having transcripts available online.

Click here to toggle view of the fourth example.
Mime-Version: 1.0
Message-ID: <12345678>
Content-Type: multipart/related; boundary="boundary-example"
Content-Metadata: <part1>

--boundary-example

Content-ID: <part1>
Content-Type: text/turtle

@prefix dc: <https://umn7fc98gj7rc.julianrbryant.com/dc/terms/> .
@prefix ex: <https://umn4kq9urycymemmv4.julianrbryant.com/> .

<mid:12345678> dc:hasPart <cid:part1>, <cid:part2>, <cid:part3> ;
  ex:hasPayload <cid:part2> .
<cid:part2> dc:references <cid:part3> .

--boundary-example

Content-ID: <part2>
Content-Type: text/plain
Content-Language: en

Climate change is caused by human activities. Therefore, we should reduce carbon emissions.

--boundary-example

Content-ID: <part3>
Content-Type: text/x-bibtex

@misc{chatgpt4o2026a,
  author = {ChatGPT 4o},
  title = {Conversation thread title},
  howpublished = {\url{https://un5mu6xkwfyq3gn85vn1b2rgdy9eg52gve02u.julianrbryant.com/threads/1234.html}},
  month = feb,
  year = {2026},
  note = {Accessed 02-02-2026}
}

--boundary-example--

Agentic Interprocess Communication

Multipart MIME messages could also be utilized by artificial-intelligence agents to communicate with and/or transfer data to and from software applications, including Web browsers.

Conclusion

Thank you. What do you think about these ideas?

See Also

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions