eupolicy.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
This Mastodon server is a friendly and respectful discussion space for people working in areas related to EU policy. When you request to create an account, please tell us something about you.

Server stats:

206
active users

#schemaorg

0 posts0 participants0 posts today
Terence Eden’s Blog<p><strong>Class Warfare! Can I eliminate CSS classes from my HTML?</strong></p><p><a href="https://shkspr.mobi/blog/2025/09/class-warfare-can-i-eliminate-css-classes-from-my-html/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">shkspr.mobi/blog/2025/09/class</span><span class="invisible">-warfare-can-i-eliminate-css-classes-from-my-html/</span></a></p><p></p><p>I recently read a brilliantly provocative blog post called "<a href="https://aaadaaam.com/notes/no-class/" rel="nofollow noopener" target="_blank">This website has no class</a>". In it, Adam Stoddard makes the case that you might not need CSS classes on a modern website:</p><blockquote><p>I think constraints lead to interesting, creative solutions […]. Instead of relying on built in elements a bit more, I decided to banish classes from my website completely.</p></blockquote><p>Long time readers will know that I'm a big fan of using semantic HTML where possible. If you peek beneath the curtain of this website you'll only see a handful of <code>&lt;div&gt;</code> elements (mostly because WordPress hardcodes them) - all the other blocks are fully semantic. Regrettably, there are rather too many <code>&lt;span&gt;</code> elements for my liking - normally for accessibility or for supplementing the metadata.</p><p>Overall, my CSS contained about 134 rules which selected based on class. Is that a lot? It <em>feels</em> like a lot.</p><p>On the one hand, classes are an easy way of splitting and grouping elements. Some <code>&lt;img&gt;</code>s should be displayed one way, the rest another. There's no semantic way to say "This is a hero image and should take up the full width, but this is an icon and should float discretely to the right."</p><p>But, on the other hand, <em>why</em> do we need classes? Keith Cirkel's excellent post "<a href="https://www.keithcirkel.co.uk/css-classes-considered-harmful/" rel="nofollow noopener" target="_blank">CSS Classes considered harmful</a>" goes through their history and brings together some proposed solutions for replacing them. I think his idea of using <code>data-</code> attributes is a neat hack - but ultimately isn't much different from using classes. It's still a scrap of metadata to be tied into a style-sheet.</p><p>Classes are great for when you <em>reuse</em> something. I have multiple <code>&lt;section&gt;</code> elements but most don't share anything in common with the others. So they probably oughtn't have classes.</p><p>Removing classes has some advantages. It makes the HTML fractionally smaller, sure, but it also forces the author to think about the logical structure of their page and the semantics behind it.</p><p>Looking through my HTML, lots of classes exist because of laziness. If I want to position all the <code>&lt;time&gt;</code> elements which are within a comment, I don't <em>need</em> to write <code>&lt;time class="whatever"&gt;</code> and to pair it with <code>.whatever { … }</code>. Instead, I can use modern CSS selectors and say <code>#comments time { … }</code>.</p><p>But this leads me on to another existential question.</p><p><strong>Are IDs necessary in modern HTML?</strong></p><p>Mayyyyybe? I only have one <code>&lt;main&gt;</code> element, so an ID on there is unnecessary. <code>&lt;input&gt;</code> elements need IDs in order to be properly targetted by <code>&lt;label&gt;</code>s - but the label can wrap around the input. I have multiple <code>&lt;aside&gt;</code> elements because there's no semantic <code>&lt;widget&gt;</code> element, so they need unique IDs.</p><p>In theory, as suggested by Adam above, I could use an <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements" rel="nofollow noopener" target="_blank">autonomous custom element</a> like <code>&lt;my-widget&gt;</code> - but that has none of the semantics and, frankly, feels like a bit of a cheat.</p><p><strong>Trimming the fat</strong></p><p>Any day where I can delete some code is a good day. This was an excellent exercise in going through (years) of HTML and CSS to see what cruft had built up.</p><p>The first CSS rule I changed was, as mentioned above:</p><pre><code>time.commentmetadata { float: right;}</code></pre><p>Which became:</p><pre><code>#comments time { float: right;}</code></pre><p>Classless and slightly more brief. Is it more readable? Having the fact it was about the metadata in a class could have been slightly useful - but if I thought it would be confusing, I could stick a <code>/* comment */</code> in there.</p><p>Next, I found <code>&lt;nav class="navigation posts-navigation"&gt;</code> - what a tautology! I have multiple <code>&lt;nav&gt;</code> elements, it is true. But none of them have the same style. So this swiftly became <code>&lt;nav id="posts-navigation"&gt;</code> with an accompanying CSS rewrite.</p><p>My theme switcher had a bunch of <code>&lt;label class=button&gt;</code>s. They were all within a container with a unique ID, so could they be changed? Yes. But seeing the class name in the HTML is a good reminder to the author of <em>how</em> they are meant to display. Does that co-mingle content and presentation too much?</p><p>Some of the WordPress default classes are ridiculous. The <code>body_class()</code> function injected this into every <code>&lt;body&gt;</code></p><p><code>"wp-singular post-template-default single single-post postid-62959 single-format-standard wp-theme-edent-wordpress-theme"</code></p><p>Most of that is redundant - what's the difference between single and single-post? For my purposes, nothing! So they were all yeeted into the sun.</p><p>Rather than targetting IDs or classes, I targetted the presence or absence of Schema.org microdata.</p><p>For example:</p><pre><code>main[itemprop="blogPost"] { … }main:not([itemprop="blogPost"]) { … }</code></pre><p>This can go to the extreme. I have lots of comments, each one has an author, the author's details are wrapped in <code>&lt;div class="authordetails"&gt;…&lt;/div&gt;</code></p><p>That can be replaced with:</p><pre><code>/* Comment Author */li[itemtype="https://schema.org/Comment"] &gt; article &gt; div[itemprop="https://schema.org/author"] { margin-bottom: 0;}</code></pre><p>Is that <em>sensible</em>? It is more semantic, but feels a bit brittle.</p><p>Parent selector are also now a thing. If I want a paragraph to have centred text but <em>only</em> when there's a submit button inside it:</p><pre><code>p:has(input#submit) { text-align: center;}</code></pre><p>Again, am I sure that my button will always be inside a paragraph?</p><p>Similarly, <a href="https://css-tricks.com/child-and-sibling-selectors/" rel="nofollow noopener" target="_blank">sibling selectors</a> are sometimes superior - but they do suppose that your layout never changes.</p><p><strong>What remains?</strong></p><p>There are some bits of this site which are reusable and do need classes. The code-highlighting you see above requires text to be wrapped in spans with specific classes.</p><p>Image alignment was also heavily class based.</p><p>There are some accessibility things which are either hidden or exposed using classes.</p><p>A bunch of WordPress defaults use classes and, even if they are redundant, it's hard to exorcise them.</p><p>As much as I would have liked to get rid of all my IDs, many needed to stay for linking as well as CSS targetting.</p><p>All told, the changes I made were:</p><ul><li>134 class selectors down to about 65.</li><li>35 ID selectors up to about 50.</li><li>5 attribute selectors up to to about 20.</li><li>Deleted or combined a lot of redundant CSS and tidied up my markup considerably.</li></ul><p>I have around 250 CSS rules, so now the majority target semantics rather than classes or IDs.</p><p><strong>Is this really necessary?</strong></p><p>No, of course not. This is an exercise in minimalism, creativity, and constraint. Feel free to litter your HTML with whatever attributes you want!</p><p>As I went through, it increasingly became apparent that I was fitting my CSS to my HTML's logical structure rather than to its <em>conceptual</em> structure.</p><p>Previously, my comments were targetted with a class. Now they have the slightly more tangled targetting of "divs with this schema attribute whose parent is an article and whose grandparent has this ID".</p><p>It is a delightful meditative exercise to go through your code and deeply consider whether something is unique, reusable, or obsolete.</p><p></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/blog/" target="_blank">#blog</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/css/" target="_blank">#css</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/html/" target="_blank">#HTML</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/schema-org/" target="_blank">#schemaOrg</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/semantic-web/" target="_blank">#semanticWeb</a></p>
Terence Eden’s Blog<p><strong>Adding Semantic Reviews / Rich Snippets to your WordPress Site</strong></p><p><a href="https://shkspr.mobi/blog/2020/07/adding-semantic-reviews-rich-snippets-to-your-wordpress-site/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">shkspr.mobi/blog/2020/07/addin</span><span class="invisible">g-semantic-reviews-rich-snippets-to-your-wordpress-site/</span></a></p><p></p><p>This is a real "scratch my own itch" post. I want to add <a href="https://schema.org/Review" rel="nofollow noopener" target="_blank">Schema.org semantic metadata</a> to the book reviews I write on my blog. This will enable "rich snippets" in search engines.</p><p>There are <em>loads</em> of WordPress plugins which do this. But where's the fun in that?! So here's how I quickly built it into my <a href="https://gitlab.com/edent/blog-theme" rel="nofollow noopener" target="_blank">open source blog theme</a>.</p><p><strong>Screen options</strong></p><p>First, let's add some <a href="https://make.wordpress.org/support/user-manual/getting-to-know-wordpress/screen-options/" rel="nofollow noopener" target="_blank">screen options</a> to the WordPress editor screen.</p><p>This is what it will look like when done:</p><p></p><p>This is how to add a <a href="https://developer.wordpress.org/plugins/metadata/custom-meta-boxes/#adding-meta-boxes" rel="nofollow noopener" target="_blank">custom metabox</a> to the editor screen:</p><pre><code>// Place this in functions.php// Display the boxfunction edent_add_review_custom_box(){ $screens = ['post']; foreach ($screens as $screen) { add_meta_box( 'edent_review_box_id', // Unique ID 'Book Review Metadata', // Box title 'edent_review_box_html',// Content callback, must be of type callable $screen // Post type ); }}add_action('add_meta_boxes', 'edent_add_review_custom_box');</code></pre><p>The contents of the box are bog standard HTML</p><pre><code>// Place this in functions.php// HTML for the boxfunction edent_review_box_html($post){ $review_data = get_post_meta(get_the_ID(), "_edent_book_review_meta_key", true); echo "&lt;table&gt;"; $checked = ""; if ($review_data["review"] == "true") { $checked = "checked"; } echo "&lt;tr&gt;&lt;td&gt;&lt;label for='edent_book_review'&gt;Embed Book Review:&lt;/label&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=checkbox id=edent_book_review name=edent_book_review[review] value=true {$checked}&gt;&lt;/tr&gt;"; echo "&lt;tr&gt;&lt;td&gt;&lt;label for='edent_rating'&gt;Rating:&lt;/label&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=range id=edent_rating name=edent_book_review[rating] min=0 max=5 step=0.5 value='". esc_html($review_data["rating"]) ."'&gt;&lt;/tr&gt;"; echo "&lt;tr&gt;&lt;td&gt;&lt;label for=edent_isbn &gt;ISBN:&lt;/label&gt;&lt;/td&gt;&lt;td&gt;&lt;input name=edent_book_review[isbn] id=edent_isbn type=text value='" . esc_html($review_data["isbn"]) . "' autocomplete=off&gt;&lt;/tr&gt;"; echo "&lt;/table&gt;";}</code></pre><p>Done! We now have a box for metadata. That data will be <code>POST</code>ed every time the blogpost is saved. But where do the data go?</p><p><strong>Saving data</strong></p><p>This function is added every time the blogpost is saved. If the checkbox has been ticked, the metadata are saved to the database. If the checkbox is unticked, the metadata are deleted.</p><pre><code>// Place this in functions.php// Save the boxfunction edent_review_save_postdata($post_id){ if (array_key_exists('edent_book_review', $_POST)) { if ($_POST['edent_book_review']["review"] == "true") { update_post_meta( $post_id, '_edent_book_review_meta_key', $_POST['edent_book_review'] ); } else { delete_post_meta( $post_id, '_edent_book_review_meta_key' ); } }}add_action('save_post', 'edent_review_save_postdata');</code></pre><p>Nice! But how do we get the data back out again?</p><p><strong>Retrieving the data</strong></p><p>We can use the <a href="https://developer.wordpress.org/reference/functions/get_post_meta/" rel="nofollow noopener" target="_blank"><code>get_post_meta()</code> function</a> to get all the metadata associated with a blog entry. We can then turn it into a Schema.org structured metadata entry.</p><pre><code>function edent_book_review_display($post_id){ // https://developer.wordpress.org/reference/functions/the_meta/ $review_data = get_post_meta($post_id, "_edent_book_review_meta_key", true); if ($review_data["review"] == "true") { $blog_author_data = get_the_author_meta(); $schema_review = array ( '@context' =&gt; 'https://schema.org', '@type' =&gt; 'Review', 'author' =&gt; array ( '@type' =&gt; 'Person', 'name' =&gt; get_the_author_meta("user_firstname") . " " . get_the_author_meta("user_lastname"), 'sameAs' =&gt; array ( 0 =&gt; get_the_author_meta("user_url"), ), ), 'url' =&gt; get_permalink(), 'datePublished' =&gt; get_the_date('c'), 'publisher' =&gt; array ( '@type' =&gt; 'Organization', 'name' =&gt; get_bloginfo("name"), 'sameAs' =&gt; get_bloginfo("url"), ), 'description' =&gt; mb_substr(get_the_excerpt(), 0, 198), 'inLanguage' =&gt; get_bloginfo("language"), 'itemReviewed' =&gt; array ( '@type' =&gt; 'Book', 'name' =&gt; $review_data["title"], 'isbn' =&gt; $review_data["isbn"], 'sameAs' =&gt; $review_data["book_url"], 'author' =&gt; array ( '@type' =&gt; 'Person', 'name' =&gt; $review_data["author"], 'sameAs' =&gt; $review_data["author_url"], ), 'datePublished' =&gt; $review_data["book_date"], ), 'reviewRating' =&gt; array ( '@type' =&gt; 'Rating', 'worstRating' =&gt; 0, 'bestRating' =&gt; 5, 'ratingValue' =&gt; $review_data["rating"], ), 'thumbnailUrl' =&gt; get_the_post_thumbnail_url(), ); echo '&lt;script type="application/ld+json"&gt;' . json_encode($schema_review) . '&lt;/script&gt;'; echo "&lt;div class='edent-review' style='clear:both;'&gt;"; if (isset($review_data["rating"])) { echo "&lt;span class='edent-rating-stars' style='font-size:2em;color:yellow;background-color:#13131380;'&gt;"; $full = floor($review_data["rating"]); $half = 0; if ($review_data["rating"] - $full == 0.5) { $half = 1; } $empty = 5 - $half - $full; for ($i=0; $i &lt; $full ; $i++) { echo "★"; } if ($half == 1) { echo "⯪"; } for ($i=0; $i &lt; $empty ; $i++) { echo "☆"; } echo "&lt;/span&gt;"; } echo "&lt;ul&gt;"; if ($review_data["amazon_url"] != "") { echo "&lt;li&gt;&lt;a href='{$review_data["amazon_url"]}'&gt;Buy it on Amazon&lt;/a&gt;&lt;/li&gt;"; } if ($review_data["author_url"] != "") { echo "&lt;li&gt;&lt;a href='{$review_data["author_url"]}'&gt;Author's homepage&lt;/a&gt;&lt;/li&gt;"; } if ($review_data["book_url"] != "") { echo "&lt;li&gt;&lt;a href='{$review_data["book_url"]}'&gt;Publisher's details&lt;/a&gt;&lt;/li&gt;"; } echo "&lt;/ul&gt;"; } echo "&lt;/div&gt;";}</code></pre><p>In <code>index.php</code>, after <code>the_content();</code> add:</p><pre><code>edent_book_review_display(get_the_ID());</code></pre><p>Then, on the website, it will look something like this:</p><p></p><p>Note the use of the <a href="http://www.righto.com/2016/10/inspired-by-hn-comment-four-half-star.html" rel="nofollow noopener" target="_blank">Unicode Half Star</a> for the ratings.</p><p>The source code of the site shows the output of the JSON LD:</p><p>When run through a <a href="https://search.google.com/structured-data/testing-tool/u/0/" rel="nofollow noopener" target="_blank">Structured Data Testing Tool</a>, it shows as a valid review:</p><p></p><p>And this means, when search engines access your blog, they will display rich snippets based on the semantic metadata.</p><p></p><p>You can <a href="https://shkspr.mobi/blog/2020/06/review-the-house-of-shattered-wings-aliette-de-bodard/" rel="nofollow noopener" target="_blank">see the final blog post</a> to see how it works.</p><p><strong>ToDo</strong></p><p>My code is horrible and hasn't been tested, validated, or sanitised. It's only for my own blog, and I'm unlikely to hack myself, but that needs fixing.</p><p>I want to add review metadata for movies, games, and gadgets. That will either require multiple boxes, or a clever way to only show the necessary fields.</p><p></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/metadata/" target="_blank">#metadata</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/php/" target="_blank">#php</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/schema-org/" target="_blank">#schemaOrg</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/wordpress/" target="_blank">#WordPress</a></p>
ljc<p>Last week we had tons of amazing discussions on <a href="https://fosstodon.org/tags/metadata" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>metadata</span></a> for <a href="https://fosstodon.org/tags/TrainingMaterials" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TrainingMaterials</span></a> <a href="https://fosstodon.org/tags/OER" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OER</span></a> during our <span class="h-card" translate="no"><a href="https://nfdi.social/@NFDI" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>NFDI</span></a></span> <a href="https://fosstodon.org/tags/DiscoRSE" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DiscoRSE</span></a> <a href="https://fosstodon.org/tags/Quadriga" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Quadriga</span></a> <a href="https://fosstodon.org/tags/hackathon" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hackathon</span></a> at <span class="h-card" translate="no"><a href="https://mastodon.social/@ZBMED" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>ZBMED</span></a></span> </p><p>Thanks to all participants!</p><p>We worked on crosswalks and mappings including <a href="https://fosstodon.org/tags/SchemaOrg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SchemaOrg</span></a> <a href="https://fosstodon.org/tags/LearningResource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LearningResource</span></a> <span class="h-card" translate="no"><a href="https://openbiblio.social/@dini" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>dini</span></a></span> <span class="h-card" translate="no"><a href="https://nfdi.social/@dalia" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>dalia</span></a></span> <a href="https://fosstodon.org/tags/Bioschemas" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bioschemas</span></a> <a href="https://fosstodon.org/tags/AMB" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AMB</span></a> <a href="https://fosstodon.org/tags/Skills4EOSC" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Skills4EOSC</span></a></p><p>Results will be published in <span class="h-card" translate="no"><a href="https://bird.makeup/users/zenodo_org" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>zenodo_org</span></a></span> Keep an eye to our updates on social media if you are interested in the topic.</p>
Cord Wiljes<p>“<a href="https://nfdi.social/tags/Metadata" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Metadata</span></a> is in the air, everywhere.”</p><p>61 metadata experts from the <a href="https://nfdi.social/tags/NFDI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NFDI</span></a> consortia met on June 25-27 at <span class="h-card"><a href="https://openbiblio.social/@tibhannover" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>tibhannover</span></a></span> Their goal was to prepare a NFDI recommendation on generic metadata schemas for research data. It was decided to adopt DataCite Metadata Schema (by <span class="h-card"><a href="https://openbiblio.social/@datacite" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>datacite</span></a></span>), <a href="https://nfdi.social/tags/DCAT" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DCAT</span></a> (by <span class="h-card"><a href="https://w3c.social/@w3c" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>w3c</span></a></span>) and <a href="https://nfdi.social/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a>. Crosswalks, provided by RDA (<span class="h-card"><a href="https://mastodon.social/@resdatall" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>resdatall</span></a></span>), were investigated and fields classified as mandatory, recommended and optional. More info: <a href="https://www.nfdi.de/section-meta/task-force-metadata/?lang=en" rel="nofollow noopener" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">nfdi.de/section-meta/task-forc</span><span class="invisible">e-metadata/?lang=en</span></a> </p><p><span class="h-card"><a href="https://nfdi.social/@NFDI" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>NFDI</span></a></span> <a href="https://nfdi.social/tags/rdm" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rdm</span></a></p>
Terence Eden’s Blog<p><strong>Addressing the Overlooked Non-Micropsychiatric Uses for Thiotimoline</strong></p><p><a href="https://shkspr.mobi/blog/2023/06/addressing-the-overlooked-non-micropsychiatric-uses-for-thiotimoline/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">shkspr.mobi/blog/2023/06/addre</span><span class="invisible">ssing-the-overlooked-non-micropsychiatric-uses-for-thiotimoline/</span></a></p><p></p><p>One of the (many) problems with AI is that training data usually needs to come from "natural" sources. If you want to emulate human-written text, you need to train something on human-written text. But with the proliferation of cheap and fast AI tools, it is likely that training data will unwillingly become contaminated with AI-written text.</p><p>In order to prevent the "Habsburg Jaw" effect, I think it would be helpful if publishers could semantically indicate that a work was written by AI. In this example, I'm using <a href="https://schema.org/Quotation" rel="nofollow noopener" target="_blank">Schema.org's Quotation type</a> to show that I'm quoting an AI, and explicitly set the author to ChatGPT.</p><pre><code>&lt;span itemscope itemtype="https://schema.org/Quotation"&gt; Author: &lt;span itemprop="author" itemscope itemtype="https://schema.org/Organization" itemid="https://chat.openai.com"&gt;OpenAI ChatGPT&lt;/span&gt; &lt;span itemprop="text"&gt;...&lt;/span&gt;&lt;/span&gt;</code></pre><p>Is that sufficient to stop AIs from feeding on their own young? I don't know. I also don't know if this covers every possible use-case, or whether there are better ways to address this. I'd be interested in hearing your thoughts.</p><p>Anyway, here's a letter to the editor of Nature written by ChatGPT. It took a little bit of prompt-engineering, but I'm rather pleased with how readily it took to the idea of inventing new uses for <a href="https://en.wikipedia.org/wiki/Thiotimoline" rel="nofollow noopener" target="_blank">Thiotimoline</a>. I especially like the way it has created obviously fictitious journals in its citations! This example is marked up so as to let robots know that it is a synthetic output.</p><p><span> Author: <span>OpenAI ChatGPT</span><br> <span>Dear Editor,</span></span></p><p>I hope this letter finds you well. As a distinguished biologist who has been an avid reader of Nature for many years, I would like to draw attention to a concerning issue that I believe has inadvertently slipped through the cracks of the journal's otherwise comprehensive coverage of scientific advancements. It is with great disappointment that I note the persistent oversight of the non-micropsychiatric applications of Thiotimoline, an area of research that deserves proper recognition.</p><p>Thiotimoline has generated considerable interest within the scientific community due to its unique temporal properties and hypothetical solubility characteristics.</p><p>Contrary to popular belief, Thiotimoline's potential extends far beyond the realm of micropsychiatry. Researchers have explored various hypothetical applications in multiple disciplines, and it is disheartening to witness Nature's omission of these intriguing possibilities. Allow me to shed some light on the non-micropsychiatric uses of Thiotimoline that merit attention:</p><ul><li><p>Time-Dependent Chemical Reactions: Thiotimoline's purported ability to dissolve before it comes into contact with water presents fascinating prospects for studying time-dependent chemical reactions. By altering reaction kinetics and introducing temporal dimensions into experimental setups, Thiotimoline could revolutionize our understanding of reaction mechanisms and provide insights into complex chemical processes 0.</p></li><li><p>Temporal Pharmacokinetics: Thiotimoline's hypothetical solubility properties and unique temporal characteristics offer a potential breakthrough in drug delivery systems. Controlled-release formulations utilizing Thiotimoline could provide precise temporal dosing, ensuring optimal drug concentrations at critical intervals and improving therapeutic efficacy 1.</p></li><li><p>Time-Sensitive Analytical Chemistry: Thiotimoline's temporal properties have captivated analytical chemists, inspiring innovative methodologies in time-sensitive analysis. Researchers propose the use of Thiotimoline as a temporal indicator, enabling real-time monitoring of chemical reactions and facilitating rapid data acquisition in various analytical techniques 2.</p></li></ul><p>While the studies mentioned above are speculative, they demonstrate the conceptual potential of Thiotimoline as a catalyst for groundbreaking scientific exploration. By embracing the imaginative aspects of scientific inquiry, we can encourage innovative thinking and uncover unexpected insights that may guide future advancements.</p><p>I implore Nature to devote some attention to these non-micropsychiatric uses of Thiotimoline. By acknowledging the imaginative scientific spirit that drives our quest for knowledge, the journal can foster interdisciplinary collaboration and inspire researchers to explore uncharted territories.</p><p>Thank you for considering my concerns. I sincerely hope that Nature will continue to lead the scientific community by embracing the full spectrum of scientific endeavors.</p><p>Yours faithfully,</p> <ol start="0"><li><p>Hypothetical Research, Journal of Speculative Chemistry, vol. 123, no. 4, pp. 567-578, 20XX.&nbsp;↩︎</p></li><li><p>Imaginary Drug Delivery Systems, Journal of Fictional Pharmacology, vol. 45, no. 2, pp. 211-223, 20XX.&nbsp;↩︎</p></li><li><p>Exploring Time-Sensitive Analytical Techniques, Fictional Analytical Chemistry Review, vol. 67, no. 3, pp. 354-365, 20XX.&nbsp;↩︎</p></li></ol> <p></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/ai/" target="_blank">#AI</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/schema-org/" target="_blank">#schemaOrg</a></p>
Timo Tijhof<p>You'd think Google, having launched schema.org, knows how to produce valid schema.org metadata and HTML5.</p><p>YouTube: How about a `&lt;span&gt;` inside the head, and `&lt;link rel=alternative&gt;` inside the body?</p><p>HTML5 parsers:<br>Thanks, I'll take that span as your implied end of `&lt;head&gt;`, and raise you an implied start of `&lt;body&gt;`. Everything that follows is now part of the body.</p><p>Context:<br><a href="https://github.com/Ranchero-Software/NetNewsWire/issues/902#issuecomment-2990075755" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/Ranchero-Software/N</span><span class="invisible">etNewsWire/issues/902#issuecomment-2990075755</span></a></p><p><a href="https://fosstodon.org/tags/NetNewsWire" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NetNewsWire</span></a> <a href="https://fosstodon.org/tags/WebStandards" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebStandards</span></a> <a href="https://fosstodon.org/tags/whatwg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>whatwg</span></a> <a href="https://fosstodon.org/tags/HTML5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HTML5</span></a> <a href="https://fosstodon.org/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> <a href="https://fosstodon.org/tags/google" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>google</span></a></p>
Thomas Tursics<p><span class="h-card" translate="no"><a href="https://mastodon.social/@b2m" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>b2m</span></a></span> <span class="h-card" translate="no"><a href="https://norden.social/@datenschatz" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>datenschatz</span></a></span> der Musterdatenkatalog der Bertelsmann Stiftung hatte anfangs auch die <a href="https://toot.berlin/tags/GND" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GND</span></a> verlinkt. Beim letzten großen Update wurden einfach eine handvoll Links benutzt - für jeden sollte jetzt etwas dabei sein. <a href="https://toot.berlin/tags/GND" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GND</span></a> <a href="https://toot.berlin/tags/Wikidata" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Wikidata</span></a> <a href="https://toot.berlin/tags/SchemaORG" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SchemaORG</span></a> <a href="https://toot.berlin/tags/EuroVoc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>EuroVoc</span></a></p><p><a href="https://github.com/bertelsmannstift/Musterdatenkatalog-V4/blob/main/assets/skos_sample.png" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/bertelsmannstift/Mu</span><span class="invisible">sterdatenkatalog-V4/blob/main/assets/skos_sample.png</span></a></p>
Inautilo<p><a href="https://mastodon.social/tags/Development" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Development</span></a> <a href="https://mastodon.social/tags/Launches" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Launches</span></a><br>Introducing NLWeb · Bringing conversational interfaces directly to the web <a href="https://ilo.im/1642dj" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">ilo.im/1642dj</span><span class="invisible"></span></a></p><p>_____<br><a href="https://mastodon.social/tags/Business" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Business</span></a> <a href="https://mastodon.social/tags/AI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AI</span></a> <a href="https://mastodon.social/tags/Website" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Website</span></a> <a href="https://mastodon.social/tags/Blog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Blog</span></a> <a href="https://mastodon.social/tags/RSS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RSS</span></a> <a href="https://mastodon.social/tags/SchemaOrg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SchemaOrg</span></a> <a href="https://mastodon.social/tags/SEO" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SEO</span></a> <a href="https://mastodon.social/tags/WebDev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>WebDev</span></a> <a href="https://mastodon.social/tags/Frontend" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Frontend</span></a> <a href="https://mastodon.social/tags/Backend" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Backend</span></a></p>
Egon Willighagen<p>new blog: "Beilstein journals contain Bioschemas" <a href="https://chem-bla-ics.linkedchemistry.info/2025/02/13/beiltein-journal-has-bioschemas.html" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">chem-bla-ics.linkedchemistry.i</span><span class="invisible">nfo/2025/02/13/beiltein-journal-has-bioschemas.html</span></a></p><p>"But this announcement is a new step. I like how validation of the chemical structures is part of the approach, and I like how they use the Bioschemas extention of schema.org. The last because they use two Bioschemas types/profiles that contributed to or initiated, respectively: MolecularEntity and ChemicalSubstance."</p><p>replies to this post become blog comments.</p><p><a href="https://social.edu.nl/tags/chemistry" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>chemistry</span></a> <a href="https://social.edu.nl/tags/openscience" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>openscience</span></a> <a href="https://social.edu.nl/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> <a href="https://social.edu.nl/tags/bioschemas" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bioschemas</span></a> <a href="https://social.edu.nl/tags/ELIXIREurope" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ELIXIREurope</span></a></p>
Tarnkappe.info<p>📬 Anonymität im Netz und SEO: Welche Daten sammelt Google wirklich?<br><a href="https://social.tchncs.de/tags/Empfehlungen" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Empfehlungen</span></a> <a href="https://social.tchncs.de/tags/Gastartikel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gastartikel</span></a> <a href="https://social.tchncs.de/tags/ConsentManagementSystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ConsentManagementSystem</span></a> <a href="https://social.tchncs.de/tags/PlausibleAnalytics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PlausibleAnalytics</span></a> <a href="https://social.tchncs.de/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> <a href="https://social.tchncs.de/tags/ServerSideTracking" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ServerSideTracking</span></a> <a href="https://social.tchncs.de/tags/Swisscowsemail" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Swisscowsemail</span></a> <a href="https://social.tchncs.de/tags/Teleguard" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Teleguard</span></a> <a href="https://sc.tarnkappe.info/53d947" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">sc.tarnkappe.info/53d947</span><span class="invisible"></span></a></p>
\๏/eg<p>A standard metadata format based on Schema.org for publishing evidence of public participation in technical events: <a href="https://codeberg.org/dribdat/hackathon.json/src/branch/main/README.md" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">codeberg.org/dribdat/hackathon</span><span class="invisible">.json/src/branch/main/README.md</span></a> <a href="https://fosstodon.org/tags/hackathon" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hackathon</span></a> <a href="https://fosstodon.org/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a></p>
Terence Eden’s Blog<p><strong>Is IPA furigana a bad idea?</strong><br><a href="https://shkspr.mobi/blog/2024/10/is-ipa-furigana-a-bad-idea/" rel="nofollow noopener" target="_blank">https://shkspr.mobi/blog/2024/10/is-ipa-furigana-a-bad-idea/</a></p><p>My name is <ruby>Terence<rp>(</rp><rt>/ˈtɛɹəns</rt><rp>)</rp> Eden<rp>(</rp><rt>ˈiːdən/</rt><rp>)</rp></ruby>.</p><p>Modern HTML allows the user to use <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby" rel="nofollow noopener" target="_blank"><code>&lt;ruby&gt;</code></a> to annotate text.</p><p>This is <em>usually</em> used for <a href="https://en.wikipedia.org/wiki/Furigana" rel="nofollow noopener" target="_blank">furigana</a> - which allows pronunciation to be placed above words.</p><p>For example: "<ruby>シン・ゴジラ <rp>(</rp><rt>Shin Godzilla</rt><rp>)</rp></ruby>" shows you how to pronounce both words if you are unfamiliar with <a href="https://en.wikipedia.org/wiki/Kanji" rel="nofollow noopener" target="_blank">kanji</a>. The text can be any language or use any characters. In Japanese, it is quite often used to show phonetic pronunciation using <a href="https://en.wikipedia.org/wiki/Hiragana" rel="nofollow noopener" target="_blank">hiragana</a>.</p><p>Because English is a <a href="https://www.reddit.com/r/linguistics/comments/anzy8o/the_common_saying_i_see_on_reddit_is_english_is_3/" rel="nofollow noopener" target="_blank">composite language</a>0, it isn't always easy for people to pronounce words1.</p><p>So I have abused(?) the ruby syntax to show the <a href="https://en.wikipedia.org/wiki/International_Phonetic_Alphabet" rel="nofollow noopener" target="_blank">International Phonetic Alphabet</a> above the English words.</p><p>Is this a <em>good</em> idea? Is it a valid use of the syntax? Is it semantically correct? I don't know. But I do now know that it is <em>possible</em>.</p><p>I doubt the majority of people know the IPA, so it is of dubious use. It does make my name's pronunciation more apparent to machines.</p><p>An alternative is to use <a href="https://schema.org" rel="nofollow noopener" target="_blank">Schema.org</a>. For example, my <a href="https://edent.tel" rel="nofollow noopener" target="_blank">contact page</a> has the following microdata:</p><pre><code>&lt;main itemscope itemtype="https://schema.org/Person"&gt; &lt;header itemprop="name"&gt; &lt;h1&gt; &lt;span itemprop="givenName"&gt;Terence&lt;/span&gt;&amp;nbsp; &lt;span itemprop="familyName"&gt;Eden&lt;/span&gt; &lt;audio id="audioPlayer" src="Terence_Eden.mp3" itemscope itemprop="additionalType" itemtype="https://schema.org/PronounceableText"&gt; &lt;meta itemprop="phoneticText" content="/ˈtɛɹəns ˈiːdən/"&gt; &lt;meta itemprop="inLanguage" content="en-GB"&gt; &lt;meta itemprop="textValue" content="Terence Eden"&gt; &lt;meta itemprop="speechToTextMarkup" content="IPA"&gt; &lt;/audio&gt;</code></pre><p>That allows humans to listen to the pronunciation of my name, and machines to see the IPA version.</p><p>Is there a better, more accessible, more useful way of encoding how to pronounce text?</p> <ol start="0"><li><p>Or a <a href="https://en.wikiquote.org/wiki/James_Nicoll" rel="nofollow noopener" target="_blank">mongrel language</a>&nbsp;↩︎</p></li><li><p>Yes, I've seen that funny Tiktok. And that one.&nbsp;↩︎</p></li></ol> <p><a href="https://shkspr.mobi/blog/2024/10/is-ipa-furigana-a-bad-idea/" rel="nofollow noopener" target="_blank">https://shkspr.mobi/blog/2024/10/is-ipa-furigana-a-bad-idea/</a></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/html/" target="_blank">#HTML</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/metadata/" target="_blank">#metadata</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/schema-org/" target="_blank">#schemaOrg</a></p>
Terence Eden’s Blog<p><strong>What programming language is in this &lt;code&gt; block?</strong><br><a href="https://shkspr.mobi/blog/2024/08/what-programming-language-is-in-this-code-block/" rel="nofollow noopener" target="_blank">https://shkspr.mobi/blog/2024/08/what-programming-language-is-in-this-code-block/</a></p><p>I'm a little bit obsessed with the idea of Semantic markup. I want the words that I write to be understood my humans <em>and</em> machines.</p><p>Imagine this piece of code: <code>print( "Hello, world!" )</code></p><p>Is that code example written in Python? C++? Basic? Go? Perhaps you're familiar enough with every programming language to tell - but most people aren't. Wouldn't it be nice to give an indication of <em>what</em> programming language is used in an example?</p><p>Here's how we might represent it in HTML:</p><pre><code>&lt;pre&gt; &lt;code&gt; print( "Hello, world!" ) &lt;/code&gt;&lt;/pre&gt;</code></pre><p>How do we let the browser, search engines, and humans know what language that's written in? It might seem obvious to use the <code>lang</code> attribute, right? We're writing in a programming language, so just use <code>&lt;code lang="python"&gt;</code>. Sadly, the HTML specification disagrees.</p><blockquote><p>The lang attribute specifies the primary language for the element's contents and for any of the element's attributes that contain text. Its value <strong>must be a valid BCP 47 language tag</strong>, or the empty string. <br> <a href="https://html.spec.whatwg.org/multipage/dom.html#attr-lang" rel="nofollow noopener" target="_blank">HTML Specification 3.2.6.2 The lang and xml:lang attributes</a> (emphasis added)</p></blockquote><p>That means it must be a <em>human</em> language like <code>en</code> or <code>en-GB</code>. No Klingon or Elvish - and certainly no computer languages!</p><p>Does the specification give any clues about the <code>&lt;code&gt;</code> element?</p><blockquote><p>There is <strong>no formal way to indicate the language of computer code</strong> being marked up. Authors who wish to mark code elements with the language used, e.g. so that syntax highlighting scripts can use the right rules, can use the class attribute, e.g. by adding a class prefixed with "language-" to the element.<br><a href="https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element" rel="nofollow noopener" target="_blank">HTML Specification 4.5.15 The code element</a> (emphasis added)</p></blockquote><p>So we have to turn to our old friend Schema.org! There is a <a href="https://schema.org/SoftwareSourceCode" rel="nofollow noopener" target="_blank"><code>SoftwareSourceCode</code> type</a> which is used for exactly this case. Sadly, there is no example documentation because Google likes to start up a project but never quite finish it.</p><p>Here's how to write a code snippet in HTML and have it semantically expose the programming language used:</p><pre><code>&lt;pre itemscope itemtype="https://schema.org/SoftwareSourceCode"&gt; &lt;span itemprop="programmingLanguage"&gt;Python&lt;/span&gt; &lt;meta itemprop="codeSampleType" content="Example"&gt; &lt;code itemprop="text"&gt; print( "Hello, world!" ) &lt;/code&gt;&lt;/pre&gt;</code></pre><p>If you <a href="https://validator.schema.org/#url=https%3A%2F%2Fshkspr.mobi%2Fblog%2F2024%2F08%2Fwhat-programming-language-is-in-this-code-block%2F" rel="nofollow noopener" target="_blank">run that through the validator</a> you'll see what a computer sees:</p><p></p><p>The <code>programmingLanguage</code> is a string - so you can write anything you like in there. You can optionally add a <code>codeSampleType</code> which, again, is a free-text field.</p><p>The <code>&lt;meta&gt;</code> items are only viewable to machines. You could also them to the user if you wanted, using a <code>&lt;span&gt;</code> or other suitable element.</p><p><strong>Alternatives</strong></p><p>It is possible to define <a href="https://www.rfc-editor.org/rfc/rfc5646#section-2.2.6" rel="nofollow noopener" target="_blank">private subtags of languages</a> for example <code>en-x-python</code> - which could mean "Comments written in English, using the private Python extension. Or even just <code>x-python</code>. That then leads on to how you describe a language - but while <a href="https://www.iana.org/assignments/media-types/application/vnd.acucobol" rel="nofollow noopener" target="_blank">COBOL has a MIME type</a> not all languages do. There are some unofficial ones like <a href="https://mimetype.io/text/x-python" rel="nofollow noopener" target="_blank"><code>text/x-python</code></a> though.</p><p>But, of course, <a href="https://sonomu.club/@threedaymonk/112970802651966367" rel="nofollow noopener" target="_blank">programming languages aren't really languages</a> - so using <code>lang</code> probably isn't suitable.</p><p>A <a href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes" rel="nofollow noopener" target="_blank"><code>data-</code> attribute</a> might also work. Adding <code>data-code="python"</code> would allow CSS to style specific code blocks. But data attributes are private to a page, and generally aren't standardised.</p><p>I <em>think</em> this is a gap in the specification. I think there ought to be a <code>code-lang</code> attribute or similar. Perhaps something like:</p><pre><code>&lt;code code-lang="python;3.6"&gt; print( "Hello, world!" )&lt;/code&gt;</code></pre><p>Which could allow authors to semantically give the name - and possibly version - of the programming language they are writing in.</p><p>Thoughts?</p><p><a href="https://shkspr.mobi/blog/2024/08/what-programming-language-is-in-this-code-block/" rel="nofollow noopener" target="_blank">https://shkspr.mobi/blog/2024/08/what-programming-language-is-in-this-code-block/</a></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/html/" target="_blank">#HTML</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/schema-org/" target="_blank">#schemaOrg</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://shkspr.mobi/blog/tag/semantic-web/" target="_blank">#semanticWeb</a></p>
Yvo Brevoort<p>I'm looking for an RDF schema for a Todo list, similar to what schema.org has for a lot of things. The options on schema.org seem incomplete for a TodoMVC implementation.</p><p>Any tips? <a href="https://mastodon.social/tags/rdf" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rdf</span></a> <a href="https://mastodon.social/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> <a href="https://mastodon.social/tags/todomvc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>todomvc</span></a></p>
KielKontrovers Blog<p><span class="h-card" translate="no"><a href="https://hutt.social/@jannis" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>jannis</span></a></span> für JSON am besten JSON-LD/ Schema.org. Das ist ein guter Standard, den zB inzwischen auch Touristiker nutzen. Ich hatte den als Standard im Soziokultur-Kalender in SH verwendet <a href="https://socal21.gitlab.io/socal21-docs/api/schemaorg/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">socal21.gitlab.io/socal21-docs</span><span class="invisible">/api/schemaorg/</span></a></p><p>Das Problem bei "jeder <br>macht sein eigenes JSON" ist ja immer, dass man für jeden Feed wieder Anpassungen vornehmen muss. Und der Standard geht recht weit für Spezialfälle.</p><p><a href="https://norden.social/tags/SchemaOrg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SchemaOrg</span></a> <a href="https://norden.social/tags/JSONLD" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JSONLD</span></a></p>
NFDI<p>We invite you to our next <a href="https://nfdi.social/tags/NFDITalk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NFDITalk</span></a>!</p><p>📖 SchemaOrg and JSON-LD for Rich Metadata Integration in the <a href="https://nfdi.social/tags/NFDI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NFDI</span></a><br>📅 18 March, 4 PM – Online<br>🎤 Speakers: Leyla Jael Castro (<span class="h-card"><a href="https://nfdi.social/@NFDI4DS" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>NFDI4DS</span></a></span>), Steffen Neumann (<span class="h-card"><a href="https://nfdi.social/@NFDI4Chem" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>NFDI4Chem</span></a></span>) and Gabriel Schneider (<span class="h-card"><a href="https://nfdi.social/@FAIRagro" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>FAIRagro</span></a></span>)</p><p>➡ Register to join the Zoom Meeting (includes discussion part):<br><a href="https://www.nfdi.de/talks/" rel="nofollow noopener" target="_blank"><span class="invisible">https://www.</span><span class="">nfdi.de/talks/</span><span class="invisible"></span></a></p><p>➡ Watch the YouTube stream: <a href="https://www.youtube.com/watch?v=AT8jlDbPR0A" rel="nofollow noopener" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=AT8jlDbPR0</span><span class="invisible">A</span></a></p><p><a href="https://nfdi.social/tags/metadata" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>metadata</span></a> <a href="https://nfdi.social/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> <a href="https://nfdi.social/tags/fdm" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fdm</span></a> <a href="https://nfdi.social/tags/rdm" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rdm</span></a> <a href="https://nfdi.social/tags/forschungsdaten" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>forschungsdaten</span></a></p>
Angelo Veltens 🏳️‍🌈<p>Companies are unfortunately using <a href="https://social.veltens.org/tags/JSON" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JSON</span></a>-LD only on public pages to improve their SEO. How cool would it be to actually have a <a href="https://social.veltens.org/tags/schemaorg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>schemaorg</span></a> Order embedded on your order details page, ready to store it on your <a href="https://social.veltens.org/tags/Solid" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Solid</span></a> Pod. You could build up your own order history that stretches over all the shops you have been using</p>