Re: How to state simple facts in RDF

I don't know anything about topic maps, but it sounds like from your 
syntactic example:

[a] is-bankrupt(barings-bank : company)

that you have some notion of "strong typing" (aka "sorts" in logic), that 
is, there are unary predicates that are somehow more essential than 
others.  There has been a lot of work on this in the research community, 
and we are trying (through this forum) to educate the SW community about 
it, not surprising that many don't know about it, or even believe it 
doesn't exist.

There are a number of ways to do this.  Here are three:

you can create special relations to differentiate the "essential" from 
"nonessential" associations to classes:

[b] essentialType rdfs:subproperty rdf:type
    nonessentialType rdfs:subproperty rdf:type
    barings-bank essentialType company
    barings-bank nonessentialType bankrupt

or create special classes:

[c] EssentialClass rdf:type rdf:Class
    NonessentialClass rdf:type rdf:Class
    Company rdf:type EssentialClass
    bankrupt rdf:type NonessentialClass
    barings-bank rdf:type company
    barings-bank rdf:type bankrupt

Of course most non-essential classes can just be turned into relations:

[d] barings-bank rdf:type Company
    barings-bank financialStatus bankrupt

These could all also be expressed in OWL, of course, but it would be a 
little different.

Assuming you are interested in automatically translating the syntax of [a] 
into rdf, I think [b] would be easiest to generate automatically from 
syntax, [c] is not much harder (it may require two passes) and  would be 
my preference, as I believe it is closer to what you really mean.  [d] 
would probably be hard to do automatically.

I'm expecting that, in order to do translation between any two languages, 
some special vocabulary will be needed in each to ensure as much of the 
semantics of the "source" language is preserved.  So both [b] and [c] 
would require some special vocabulary to support translation.


Dr. Christopher A. Welty, Knowledge Structures Group
IBM Watson Research Center, 19 Skyline Dr., Hawthorne, NY  10532     USA   
Voice: +1 914.784.7055,  IBM T/L: 863.7055, Fax: +1 914.784.7455
Email:, Web:

Lars Marius Garshol <> 
Sent by:
06/29/2005 09:09 AM


Re: How to state simple facts in RDF

* Michael F. Uschold
| Rdf:type is fine for many such examples.

It does seem to work, and work well, in some of the cases, I agree.
| However, it is not always such a good idea to create special
| classes/types for every such fact.
| For example: 
|                My car is red.
|                This food tastes good.
| To use rdf:type food these statements requires one to create
| artificial classes/types for such notions as RedThings, or
| GoodTastingThings.
| One can do it, but it is not always what you want.

I agree, and the RDFTM work is one case where this isn't really what
we want, since although it works to turn

  is-bankrupt(barings-bank : company) /* LTM syntax */


  (barings-bank, rdf:type, BankruptCompany)

this causes difficulties with roundtripping back to topic maps, since
we can't then easily distinguish between types that are "real types"
and types that really represent "unary associations".

Does anyone know of other good modelling patterns for this in RDF? Or
do we need to create a special
rdftm:ArtificialClassThatIsReallyAUnaryAssociationType class?

Lars Marius Garshol, Ontopian         <URL: >
GSM: +47 98 21 55 50                  <URL: >

Received on Wednesday, 29 June 2005 15:02:35 UTC