Пример #1
0
        public object Visit(ComplexRoleInclusion e)
        {
            if (e.modality != Statement.Modality.IS)
            {
                return(CreateNull());
            }

            return(COMPLEXROLINC(e.RoleChain, e.R));
        }
Пример #2
0
        public override object Visit(ComplexRoleInclusion e)
        {
            var id = "prp-spo2-" + Interlocked.Increment(ref prp_spo2_cnt).ToString();

            id2stmt.Add(id, e);

            sb.Append("[" + id + ": ");
            int varid = 0;

            foreach (var r in e.RoleChain)
            {
                if (varid > 0)
                {
                    sb.Append(", ");
                }
                if (r is CNL.DL.Atomic)
                {
                    var q = owlNC.getIRIFromId((r as CNL.DL.Atomic).id, EntityKind.Role);
                    sb.Append("(?X" + varid.ToString() + " <" + q + "> " + "?X" + (varid + 1).ToString() + ")");
                }
                else if (r is CNL.DL.RoleInversion)
                {
                    var rr = (r as CNL.DL.RoleInversion).R;
                    if (rr is CNL.DL.Atomic)
                    {
                        var q = owlNC.getIRIFromId((rr as CNL.DL.Atomic).id, EntityKind.Role);
                        sb.Append("(?X" + (varid + 1).ToString() + " <" + q + "> " + "?X" + varid.ToString() + ")");
                    }
                }
                varid++;
            }

            sb.Append(" -> ");

            {
                var r = e.R;
                if (r is CNL.DL.Atomic)
                {
                    var q = owlNC.getIRIFromId((r as CNL.DL.Atomic).id, EntityKind.Role);
                    sb.Append("(?X0 <" + q + "> ?X" + varid.ToString() + ")");
                }
                else if (r is CNL.DL.RoleInversion)
                {
                    var rr = (r as CNL.DL.RoleInversion).R;
                    if (rr is CNL.DL.Atomic)
                    {
                        var q = owlNC.getIRIFromId((rr as CNL.DL.Atomic).id, EntityKind.Role);
                        sb.Append("(?X" + varid.ToString() + " <" + q + "> " + "?X0)");
                    }
                }
            }
            appendDebugString(sb, e);
            sb.AppendLine("]");
            return(null);
        }