- 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