For a while I kept seeing references to Semantic Web, RDF (+ RDF article
on Wikipedia), and related projects (such as
OWL, wikidata, dbpedia, dublin core, WebID). Used to mostly ignore them,
not seeing an immediate application, being a bit appalled by XML being
around it, being uncertain regarding sufficiency of RDF expressiveness.
The "web" part itself was appalling as well, being associated with
bloating, poor accessibility, everything broken and poorly reinvented:
from <marquee>
and frames to JS frameworks and SPAs.
But "web" in "semantic web" stands for the concept of interlinked
documents, not for the mess that currently dominates HTTP. There's plenty
of potential applications, too: some of those are similar to the ones I've
tried (e.g., the "Semantic UI" note), to the ones I thought would be
handy for various tasks (knowledge representation in general), and
finally – there's FOAF, potentially useful—among other things—for search
in distributed systems. Now it seems that I've missed quite a large chunk
of nice technologies, as it happens from time to time, but it's nice to
finally discover them.
While RDF is a framework, there's a few formats for its serialisation: some are more readable (I quite like Turtle); some are simple and handy for streaming (particularly N-Triples); RDFa (or RDFa Lite) allows embedding into other XML/HTML documents; they can be linked as alternate versions of HTML documents, of course, and there's a few other formats. That's actually a bit of an issue, too, since some of the software that works with RDF then has to support multiple formats (I've already stumbled upon that while adding RDF support into pancake) – but that's the price of having a choice.
RDF is indeed not as expressive as some languages, but it's very simple instead.
To try it out, one could grab librdf-based CLI tools and
libraries (packages in system repositories may be
called raptor2
and rasqal
;
rapper
is handy to just parse/convert the
documents, roqet
is for SPARQL experimentation,
and rdfproc
– for storage/retrieval/processing), Apache Jena
for Java, rdf4h and swish (and a few more) packages for Haskell (I've also
started writing librdf bindings), OpenLink Virtuoso as a database. There
are online/web-based tools for search and browsing, too, such as FOAF
search and Semantic forms. There's also sparql-mode
for
Emacs, and OpenLink Structured Data Sniffer add-on for Firefox.
Unfortunately some of the links in specifications and other related documents are dead, and generally this whole thing is not very popular and well-maintained, but SWIG has an active and helpful channel on Freenode/Libera.chat (#swig), there are well-written—and apparently thought-through—materials/specifications/standards.
When composing a new RDF document, apparently it's suggested to link corresponding DBpedia articles, and there's a list of popular RDF namespace prefixes to find additional common predicates.
Some of the common vocabularies are included into RDFa Core Initial Context. In addition to those, there are the ones like The Music Ontology and Food Ontology around.
On the same day when I've finished writing the initial version of this note, ActivityPub (one of Social Web Protocols) got standardised – based on (or perhaps merely compatible with) RDF as well. The protocols on which it is based are used for federated microblogging, in which I wasn't interested, but it looks fine (though I'm not a fan of using HTTP for everything, while JSON-LD is awkward and SemWeb integration was not a priority there (see the JSON-LD and Why I Hate the Semantic Web article by a JSON-LD creator), there's no FOAF integration, authentication is not specified, with the suggested way being OAuth 2.0, and a few other strange/unpleasant bits).
An irritating issue I've noticed is that many web pages which provide RDF metadata, do so using ontologies oriented on (that is, developed by, and rather specific to) centralised services.
Tim Berners-Lee's "Design Issues" include interesting Semantic Web posts, too.