Tim,
If we popup the stack from Turtle to the modeling problem, it would seem to be that: . Parent is someone who has children - class membership can be inferred if you define this class using owl:someValuesFrom restriction on :hasChild property or a min cardinality restriction on the same. . Sibling is someone who has siblings - class membership can be inferred if you define this class using owl:someValuesFrom restriction on :hasSibling property or a min cardinality restriction on the same. . :Man can be defined using a owlHasValue "male" on the :gender property (or :Male if you are using a controlled vocabulary and not strings, this depends on how your data looks like) . Then, Uncle is an intersection of the class :Man and an anonymous class equivalent to owl:someValuesFrom :Parent restriction on :hasSibling property. o In Manchester syntax it will look like :Man and :hasSibling some :Parent . Nephew is an intersection of the class :Man and an anonymous class equivalent to owl:someValuesFrom :Sibling restriction on either an inverse of :hasChild property or (the latter is simpler and easier to understand which should be a key goal when selecting ontology modeling patterns) on :hasParent property. o In Manchester syntax it will look like :Man and inv(:hasChild) some :Sibling or :Man and :hasParent some :Sibling. Either of these options is easier to understand than the double inverses in your example. . :hasSibling could be defined as a parent property of :hasBrother and :hasSister if your underlying data uses these properties. It is a symmetric property. . :hasChild can be defined as an inverse of :hasParent . :Brother, if you really need this class, is an intersection of :Man and :Sibling Regards, Irene From: [email protected] [mailto:[email protected]] On Behalf Of Holger Knublauch Sent: Thursday, January 10, 2013 6:11 PM To: [email protected] Subject: Re: [topbraid-users] How to create restriction class in TBC Hi Tim, the Turtle that Jena accepts looks like :Uncle a owl:Class ; rdfs:subClassOf :Person ; owl:equivalentClass [ a owl:Restriction ; owl:onProperty [ owl:inverseOf :hasBrother ] ; owl:someValuesFrom [ owl:onProperty [ owl:inverseOf :hasParent ] ; owl:someValuesFrom :Person ] ] . so your example had a few too many dots and was missing a closing bracket at the end. I haven't looked at the Turtle spec whether the dots should be allowed or not - if you think this is a bug please follow up on the Jena mailing list. It also lacked an rdf:type owl:Restriction triple. This is displayed by TBC in Manchester Syntax as inv(hasBrother) some (inv(hasParent) some Person) However the current TBC form widget doesn't seem to like this (unusual) construct so that editing the source code is your safest option at this time. ... or use SPIN which is arguably a more natural and more flexible way of modeling this scenario. HTH Holger On 1/11/2013 7:34, Tim Harsch wrote: Hi all, After reading the TBC getting started guide and some exploration of the restriction editor I find myself having difficulty creating a certain restriction class. First, my modeling problem and a relevant question took place here: https://answers.semanticweb.com/questions/20300/model-uncle-using-class-rest rictions In that thread I was advised to try this solution: :Uncle owl:equivalentClass [ owl:onProperty [ owl:inverseOf :hasBrother ]; # or :hasBrother if it's asserted to be symmetric owl:someValuesFrom [ owl:onProperty [ owl:inverseOf :hasParent ]; # or :hasChild if it's defined owl:someValuesFrom :Person ] . I first tried to do this using TBC form editor but could not figure it out. Question 1: how do I model this using the form editor? I then tried a work around of just adding the turtle directly and then opening the file to see what TBC would do with the form for Uncle. But I get: Operation failed. Reason: com.hp.hpl.jena.shared.JenaException: org.openjena.riot.RiotException: [line: 51, col: 47] Triples not terminated properly in []-list The Turtle file is here: https://dl.dropbox.com/u/4464286/ForTopQuadrant/uncleProblem.ttl So, Question 2: Why is that turtle throwing an exception? It looks valid to me. Thanks for any help, Tim -- -- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/topbraid-users?hl=en -- -- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/topbraid-users?hl=en -- -- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/topbraid-users?hl=en
