This documnent describes my ideas on the way to represent Nary Realtions in RDF.
The basic relationship we can describe with RDF is binary, namely a relathionship between two resources.
However, there are many cases that we want to express the relationship among more than 2 resources. And there have been discussions and proposals for the framework for the description of those Nary relathionships (see NaryRelations page in ESW Wiki for example)
And RDF Best Practice and Deployment WG has published its working draft Defining N-ary Relations on the Semantic Web: Use With Individuals.
This page presents my (ongoing) proposal for a framework for presenting N-ary relationships.
It looks similar to the "Pattern 2" analysis in the working note, but more generalized to include "unary" and "binary" case, and basic vocabulary is proposed here(@@they appear in examples, but yet to be defined formally)
This approach owes its most part to the approaches in linguistics.
Example:
John teaches math to Mary.
[ a :teach;
role:agent :John;
role:thme :Math;
role:goal :Mary
].
Example: "John swims."
[ a :swim;
role:agent John ].
Example:
"Titanic sank."
[ a :sank;
role:theme :Titanic ].
or
[ a :sink;
role:theme :Titanic;
role:tense role:past
].
By generalizing the "Predicate as the main node" approach above to the trinary and unary cases, we get somewhat new (or unfamiliar) graphs for conventional binary relations.
Namely, even in expressing binary relationship, we make a node representing the (instance of) main predicate, and connect each arguments to that node.
This approach is similar to reification, but different
in that the "main" node is not of type rdf:Statement
, but
of the seamantic predicate (so we don't have arcs labeled rdf:predicate
)
. And labels attatched to the arcs are not
syntax labels likerdf:subject
or rdf:object
,
but semantic ones (
thematic roles aka θ roles).
Example:
John teaches math.
[ a :teach;
role:agent :John;
role:theme :Math
].
Example:
John swims in the pool.
[ a :swim;
role:agent :John;
role:location :Pool
].
Or
[ a :swim;
role:agent :John;
role:location [ a :in;
role:theme]
].
Let's begin with a very simple case.
Example:
Smoking causes lung cancer.
[ a :cause;
role:source :smoking;
role:theme :lung_cancer
].
Example:
John made Mary meet Sarah.
[ a :made;
role:agent :John;
role:theme [ a :meet;
role:experiencer :Mary;
role:theme :Sarah
]
].
Example:
That John died made Mary refrain from smoking.
[ a :made;
role:source [a :died;
role:theme :John];
role:theme [a :refrain_from;
role:agent :Mary;
role:source :smoking]
]
When adopting analysis above, do we have any problems with reification?
When doing reification as usual, the resultant graph seems a little bit complicated.
For example, consider "John teaches math.", of which our analysis was
[ a :teach;
role:agent :John;
role:theme :Math
].
When we apply reification to that graph, the result would be
_:b2 a rdf:Statement;
rdf:subject _:b1;
rdf:predicate role:agent;
rdf:object :John.
_:b3 a rdf:Statement;
rdf:subject _:b1;
rdf:predicate role:theme;
rdf:object :Math.
_:b1 a :teach.
Does this seem problematic? → At first glance, yes. It's too much complicated.
However, the sentence above actually (simulutanously) says these two things:
And we can attach our belief to either of them. For example, we can say "It is 75% probable that it is John who teaches math." with
_:b4 a prob:Belief;
prob:proposition _:b2;
prob:has_probability [a prob:probability;
rdf:value "0.75"].
Actually, there could be another analysis: a more complicated/sofisticated version. In the analysis above, we didn't reify the statement ":b1 a rdf:type", but we can also reify it.
So, the reified version is:
_:b2 a rdf:Statement;
rdf:subject _:b1;
rdf:predicate role:agent;
rdf:object :John.
_:b3 a rdf:Statement;
rdf:subject _:b1;
rdf:predicate role:theme;
rdf:object :Math.
_:b4 a rdf:Statement;
rdf:subject _:b1;
rdf:predicate rdf:type;
rdf:object :teach.
What does this mean? It means "It is to teach (not to study, for example) that John does with math." (I'm not sure if it's correct English senence, though)
[ a prob:Belief;
prob:proposition [ a :have;
role:location :Christine;
role:theme [ a :breast_tumor]
];
prob:has_probability _:b1
].
_:b1[ a prob:probability].
_:b2[ a :high;
role:theme _:b1].
[ a :have;
role:location :Steve;
role:theme _:b1
].
_:b1 a :temparature.
[ a :high;
role:theme _:b1
].
[ a :falling;
role:theme _:b1
].
[ a :buy;
role:agent :John;
role:theme [ a :Lenny_the_lion_book];
role:source :books_example_com;
role:instrument "$15";
role:purpose :birthday_gift
].