@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/portfolio/lh-rdf/>
  a sioc:Post ;
  dc:title "Changelog" ;
  dcterms:identifier 150483 ;
  dc:modified "2026-10-16T10:14:34Z"^^xsd:dateTime ;
  dc:created "2026-10-16T10:14:34Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-rdf/changelog/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded "<ul class=\"lh_portfolio-meta\"><li><strong>Part of:</strong> <a href=\"https://lhero.org/portfolio/lh-rdf/\">LH RDF</a></li></ul><ul class=\"lh_portfolio-changelog\"><li><strong>2.5.2:</strong> Removes the class_exists() guard wrapped around the plugin&#039;s own LH_rdf_plugin class. The guard protected nothing, since WordPress loads each plugin file once, and on this server an unextended class wrapped this way can be bound at compile time, making the guard skip the plugin&#039;s setup silently with no error. Behaviour is unchanged. The guard around the bundled EasyRdf autoloader stays, since other plugins may load that library too.</li><li><strong>2.5.1:</strong> Content negotiation no longer turns missing pages into RDF. A request that asked for JSON or another RDF type was redirected to an RDF feed whatever the URL, so an address that does not exist, such as /token or /.well-known/openid-configuration, answered with a redirect to the site&#039;s RDF graph instead of a 404. OAuth clients, including Claude&#039;s MCP connectors, read that as a valid but empty authorization-server document, fell back to /token and got the graph instead of a token, so connectors on sites like shawfactor.com and princesparktouch.com lost their sessions and had to be re-authorised. The redirect now only happens for GET and HEAD requests to a page LH RDF describes (a single post or page, an author, or the home page); 404s and everything else are left alone. Also normalises the version to SemVer (2.05 becomes 2.5.1).</li><li><strong>2.05:</strong> Bump version 2.04 -&gt; 2.05 for the ml/json-ld -&gt; sweetrdf/json-ld dependency swap; align &#039;Requires PHP&#039; header with the new 8.1 floor.</li><li><strong>2.04:</strong> Fix PHP 8.1+ implicit-nullable-parameter deprecation in the bundled ml/json-ld vendor library: Graph::__construct(DocumentInterface $document = null) now explicitly declares ?DocumentInterface. No functional change. Bump plugin version 2.03 -&gt; 2.04.</li></ul>"^^rdf:XMLLiteral ;
  sioc:content "Part of: LH RDF2.5.2: Removes the class_exists() guard wrapped around the plugin&#039;s own LH_rdf_plugin class. The guard protected nothing, since WordPress loads each plugin file once, and on this server an unextended class wrapped this way can be bound at compile time, making the guard skip the plugin&#039;s setup silently with no error. Behaviour is unchanged. The guard around the bundled EasyRdf autoloader stays, since other plugins may load that library too.2.5.1: Content negotiation no longer turns missing pages into RDF. A request that asked for JSON or another RDF type was redirected to an RDF feed whatever the URL, so an address that does not exist, such as /token or /.well-known/openid-configuration, answered with a redirect to the site&#039;s RDF graph instead of a 404. OAuth clients, including Claude&#039;s MCP connectors, read that as a valid but empty authorization-server document, fell back to /token and got the graph instead of a token, so connectors on sites like shawfactor.com and princesparktouch.com lost their sessions and had to be re-authorised. The redirect now only happens for GET and HEAD requests to a page LH RDF describes (a single post or page, an author, or the home page); 404s and everything else are left alone. Also normalises the version to SemVer (2.05 becomes 2.5.1).2.05: Bump version 2.04 -&gt; 2.05 for the ml/json-ld -&gt; sweetrdf/json-ld dependency swap; align &#039;Requires PHP&#039; header with the new 8.1 floor.2.04: Fix PHP 8.1+ implicit-nullable-parameter deprecation in the bundled ml/json-ld vendor library: Graph::__construct(DocumentInterface $document = null) now explicitly declares ?DocumentInterface. No functional change. Bump plugin version 2.03 -&gt; 2.04." ;
  sioc:topic <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
