Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] Modeling Problem

Michael Lodemann milo at
Fri Oct 10 02:01:44 PDT 2008

>> curr_position(?sign, ?pos) ^ onRoadSection(?sign, ?road_sec) ^
>> road_sec_start(?start_pos, ?road_sec) ^ road_sec_end(?end_pos, ?
>> road_sec) ^
>> swrlb:greaterThanOrEqual(?pos, ?start_pos) ^
>> swrlb:lessThanOrEqual(?pos, ?end_pos) -> CorrectlyPlacedSign(?sign)
> I haven't really worked with SWRL, but this all seems like it should
> be a valid rule.

That sounds great, because I just started to try out SWRL the day before

>> Is this possible?
>> And do "curr_position", "onRoadSection", "road_sec_start" and
>> "road_sec_end" have to be (object)-properties in my ontology?
>> And "CorrectlyPlacedSign" is a class as you described before, right?
>> What about "?pos", "?star_pos" and "?end_pos"? In my ontology they
>> currently are Datatype-properties of "Sign" and "RoadSection"
>> respectively.
>> Is it possible to handle it like this?
> You can use a mix of object and datatype properties.  For the
> arithmetic and comparison built-ins, you would need to use datatype
> properties to get appropriate values for them to operate on.

How would you model for example the "curr_position"-Property? The thing
is, it has a domain "Sign" and a range "Sign.Position", which is a
datatype-property. So "curr-position" cannot be an object-property, right?
But what else? Same proplem with "road_sec_start" D:"RoadSection"
R:"RoadSection.Start" and "road_sec_end" D:"RoadSection"

Should I consider to model "Position" as a class so that "Sign" has a
postion and "RoadSection" has two positions (start, end)? Are there
aliases? ... like RoadSection.(Postion as Start), RoadSection(Postion as
End)? How do I model this?

>> That brings me to the next problem - negotiation.
>> I can't model in SWRL that all not CorrectlyPlaced-Signs are
>> MisPlaced-Signs, can I?
> Correct.  This is a consequence of open-world reasoning.  There is no
> "failure as negation" reasoning allowed.
>> So do I have to create rules for every possible misplacement?
> That is one possible method.  With your specific example, it shouldn't
> be too hard, since with the 1-dimensional model, you only have two
> possibilities for an incorrectly placed sign.  It is either before the
> road segment or after it.  Now, your full model may have other ways
> signs could be incorrectly placed, so this may not be completely
> practical.  But you do have to essentially come up with the negated
> rules yourself, especially since a number of the rule clauses really
> exist only to bind variables and are not directly part of the correct
> placement test.

Ok, that is what I thought. Thanks for the clearance.

> The other option is to do something procedural, like using Java code
> to take the set-difference between all signs and all correctly-placed
> signs.  That allows you to introduce your own "closed world"
> assumption outside of the OWL+SWRL reasoning system.

I would like to have it all together in one OWL-file. So I would like to
avoid the usage of jena etc.

Thanks for your help! Perhaps you can help me going further with
modeling the mixed-up-property "curr_position(Sign, Sign.Position)".


More information about the protege-owl mailing list