In #swig discussion, Tim mentioned he did some writing on labels and rules and OWL which prompted me to flesh out some related ideas I had. The result is a Makefile and four tests with example labels. One of them is:
All resources on example.com are accessible for all users and meet WAI AA guidelines except those on visual.example.com which are not suitable for users with impaired vision.
I picked an XML syntax out of the air and wrote visaa.lbl:
And then in testdata.ttl we have:
<http://example.com/pg1simple> a webarch:InformationResource.
:charlene a wai:AAuser.
Then we run the test thusly...
$ make visaa_test.ttl
xsltproc --output visaa.rdf label2rdf.xsl visaa.lbl
python ../../../2000/10/swap/cwm.py visaa.rdf lblrules.n3 owlAx.n3
--think --filter=findlabels.n3 --n3 >visaa_test.ttl
and indeed, it concludes:
<http://example.com/pg1simple> lt:suitableFor :charlene .
but doesn't conclude that pg2needsVision is OK for charlene.
The .lbl syntax is RDF data via GRDDL and label2rdf.xsl. Then owlAx.n3 is rules that derive from the RDFS and OWL specs; i.e. stuff that's already standard. As Tim wrote, A label is a fairly direct use of OWL restrictions. This is very much the sort of thing OWL is designed for. Only the lblrules.n3 bit goes beyond what's standardized, and it's written in the N3 Rules subset of N3, which, assuming a few built-ins, maps pretty neatly to recent RIF designs.