- From: Michael Schneider <m_schnei@gmx.de>
- Date: Mon, 22 Jan 2007 14:33:39 +0100
- To: chris.richard@gmail.com
- CC: timbl@w3.org, sandro@w3.org, richard@cyganiak.de, chris@bizer.de, semantic-web@w3.org, semantic_web@googlegroups.com, r.newman@reading.ac.uk
Hi, Chris!
Please check, if I correctly understand your proposed approach below:
When I want to make assertions about some relationship ":s :p :o",
I define some class ":P_RelShips", which is intended to contain all
relationships with predicate ":p", that actually hold in the regarded
domain.
Further, there are two special properties:
* ':has_P_RelShip', which has class ":P_RelShips" as its rdfs:range,
and which will receive ":s" of the original triple as its subject
* ':with', which has class ":P_RelShips" as its rdfs:domain,
and which will receive ":o" of the original triple as its object
Other properties can than be assigned to an instance of ":P_RelShips" to
annotate such a relationship.
There should also be some inference method to infer the original
relationship from such a construct. I can see that Richard Newman has
proposed such a method in a reply to your post.
Perhaps, I suggest a small change: I would use the /inverse/ property of
':has_P_RelShip', called ':is_P_RelShip_of', so the ':P_RelShip' class
is actually in the rdfs:domain of this property. I can then define class
":P_RelShips" reasonably as an OWL class:
class(P_RelShips partial
restriction(is_P_RelShip_of allValuesFrom(P_DOMAIN))
restriction(with allValuesFrom(P_RANGE))
restriction(is_P_RelShip_of cardinality(1))
restriction(with cardinality(1))
)
Here, "P_DOMAIN" and "P_RANGE" are meant to be 'rdfs:domain' and
'rdfs:range' of property ':p'. It is now warranted that every
relationship instance of class ':P_RelShips' will have those two
properties, and have them exactly once, and that the values of these
properties will have the intended origin.
Ok, this really seems to work! So I could take this approach as an
alternative to not having explicit language support for expressing
relationships.
Thanks,
Michael
Chris Richard wrote:
>>If not, can you tell me some
>>alternative means to reference (and annotate) relationships within a
>>domain? I do not see a second candidate for providing this functionality.
>
> If you want to talk about the relationships shouldn't you explicitly model
> them?
>
> Think about "foaf:knows" for a second. If I want to talk about "I know so
> and so" and "I've known them for this long" and "we met each other this way"
> I think you could use "foaf:knows" for the first statement and then
> employ reification with the semantics you described and a few additional
> predicates. But I feel like the proper way to represent this is
> with a different structure. First, a "hasPersonalRelationship" (Person,
> PersonalRelationship) predicate. Related predicates would then be things
> like "with" (PersonalRelationship, foaf:Person), "since"
> (PersonalRelationship, xsd:date), etc.
> The problem I see with this approach
> is that the existing predicate, "foaf:knows" is basically marooned and you'd
> have to choose between the two vocabularies. But can't "foaf:knows" can just
> be a quick way of saying "hasPersonalRelationship with", i.e.
>
> Chris foaf:knows Jen
>
> becomes shorthand for (and equivalent to):
>
> Chris hasPersonalRelationship _:a
> _:a with Jen
>
> Is there any way to represent this type of relation amongst predicates with
> OWL or a related language? I see this same modelling technique used in the
> following tagging vocabulary:
> http://www.holygoat.co.uk/owl/redwood/0.1/tags/tags.n3 where resources can
> be tagged by relating them directly to tags with "taggedWithTag" (Resource,
> Tag) or indirectly with "tag" (Resource, Tagging) and "associatedTag"
> (Tagging, Tag).
>
> In this case, Foo taggedWithTag Bar
>
> is shorthand for:
>
> Foo tag _:a
> _:a associatedTag Bar
>
> Hopefully I'm not way off the mark...
>
> Chris
Received on Monday, 22 January 2007 13:33:59 UTC