Abbreviation for CombinedInverseFunctionalProperty or CompositeInverseFunctionalProperty.

note: there is a concept for this in OWL2: OWL 2 Keys

Where an InverseFunctionalProperty will help you identify something by its relation to another thing, a CombinedInverseFunctionalProperty (CIFP) will help you identify something by a number of relations it may have. This is equivalent to the concept of foreign key in relational databases.

So in foaf the mbox relation is inverse functional. If a Person named P1 and a Person named P2 have the same foaf:mbox relation to <mailto:henry.story@bblfish.net> then P1 owl:sameAs P2.

But we often have things that have their identity dependent on a number of things. So for example a URI's are composed of well known parts

      foo://example.com:8042/over/there?name=ferret#nose
      \_/   \______________/\_________/ \_________/ \__/
       |           |            |            |        |
    scheme     authority       path        query   fragment
       |   _____________________|__
      / \ /                        \
      urn:example:animal:ferret:nose

So to stick with the simpler URN's we could create a vocabular to identify its parts: uri:scheme and uri:path. This would allow us to say something like

 [] owl:sameAs "urn:example:animal:ferret:nose"^^xsd:anyURI;
    uri:scheme "urn";
    uri:path  "example:animal:ferret:nose".

It is clear in the above example that uri:scheme and uri:path together identify a URN. That is if we had the following tripples

_:X uri:scheme "urn";
    uri:path   "example:animal:ferret:nose".

Then we should be able to conclude that

_:X owl:sameAs "urn:example:animal:ferret:nose"^^xsd:anyURI.

uri:scheme and uri:path together (combined) form an Inverse Functional Property.

Now how to model CIFP's is still up for debate. A Number of good suggestions have been put forward on the SWIG mailing list. See the thread http://lists.w3.org/Archives/Public/semantic-web/2005Feb/0095.html which led to a neat definition using N3 rules. This only appears to work in Euler however, so SeanPalmer developed some rules for CIFPs that should work in CWM. See discussion for more details.

They boil down to finding a way to construct a relation out of a number of other relations, and then describing this new relation as an owl:inverseFunctionalProperty

This does some of the work that CurriedFunction have been thought to be good for, but CIFPs are in my opionion easier to understand.

CIFP (last edited 2009-03-10 13:15:36 by shellac)