Skip to content
Snippets Groups Projects
JSONManager.cs 6.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections.Generic;
    
    using Newtonsoft.Json;
    
    using JsonSubTypes;
    
    public static class JSONManager
    
    ki7077's avatar
    ki7077 committed
       
    
        public static class MMTURIs
        {
            public const string Point = "http://mathhub.info/MitM/core/geometry?3DGeometry?point";
    
    ki7077's avatar
    ki7077 committed
            public const string Tuple = "http://gl.mathhub.info/MMT/LFX/Sigma?Symbols?Tuple";
    
            public const string LineType = "http://mathhub.info/MitM/core/geometry?Geometry/Common?line_type";
            public const string LineOf = "http://mathhub.info/MitM/core/geometry?Geometry/Common?lineOf";
    
    ki7077's avatar
    ki7077 committed
    
    
            public const string OnLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?onLine";
            public const string Ded = "http://mathhub.info/MitM/Foundation?Logic?ded";
            public const string Eq = "http://mathhub.info/MitM/Foundation?Logic?eq";
    
    ki7077's avatar
    ki7077 committed
            public const string Metric = "http://mathhub.info/MitM/core/geometry?Geometry/Common?metric";
            public const string Angle = "http://mathhub.info/MitM/core/geometry?Geometry/Common?angle_between";
    
            public const string Sketch = "http://mathhub.info/MitM/Foundation?InformalProofs?proofsketch";
            public const string RealLit = "http://mathhub.info/MitM/Foundation?RealLiterals?real_lit";
    
    ki7077's avatar
    ki7077 committed
    
            public const string ParallelLine = "http://mathhub.info/MitM/core/geometry?Geometry/Common?parallelLine";
            // public string RectangleFact = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?rectangleType";
            //  public string RectangleFactmk = "http://mathhub.info/FrameIT/frameworld?FrameITRectangles?mkRectangle";
    
            public const string CircleType3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleType3D";
            public const string MkCircle3d = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circle3D";
            public const string TriangleMiddlePoint = "http://mathhub.info/FrameIT/frameworld?FrameITTriangles?triangleMidPointWrapper";
            public const string RadiusCircleMetric = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?circleRadius";
    
            public const string AreaCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?areaCircle";
            public const string VolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?volumeCone";
            public const string ConeOfCircleApex = "http://mathhub.info/FrameIT/frameworld?FrameITCone?circleConeOf";
    
            public const string ParametrizedPlane = "http://mathhub.info/MitM/core/geometry?Planes?ParametrizedPlane";
            public const string pointNormalPlane = "http://mathhub.info/MitM/core/geometry?Planes?pointNormalPlane";
            public const string OnCircle = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?pointOnCircle";
            public const string AnglePlaneLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?angleCircleLine";
            public const string OrthoCircleLine = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?orthogonalCircleLine";
    
            public const string TruncatedVolumeCone = "http://mathhub.info/FrameIT/frameworld?FrameITCone?truncatedConeVolume";
            public const string CylinderVolume = "http://mathhub.info/FrameIT/frameworld?FrameITCylinder?cylinderVolume";
            public const string EqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?equalityCircles";
            public const string UnEqualityCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?unequalityCircles";
    
            public const string ParallelCircles = "http://mathhub.info/FrameIT/frameworld?FrameITCone?parallelCircles";
            public const string RightAngle = "http://mathhub.info/FrameIT/frameworld?FrameITBasics?rightAngle";
    
            public const string TestType = "http://mathhub.info/FrameIT/frameworld?FrameITCircle?xcircleType3D";
    
    
    
        public class URI
        {
            public string uri;
    
            public URI(string uri)
            {
                this.uri = uri;
            }
        }
    
        [JsonConverter(typeof(JsonSubtypes), "kind")]
        public class MMTTerm
        {
            string kind;
        }
    
        public class OMA : MMTTerm
        {
            public MMTTerm applicant;
            public List<MMTTerm> arguments;
            public string kind = "OMA";
            public OMA(MMTTerm applicant, List<MMTTerm> arguments)
            {
                this.applicant = applicant;
                this.arguments = arguments;
            }
    
        }
    
        public class OMS : MMTTerm
        {
            public string uri;
            public string kind = "OMS";
    
    
            public OMS(string uri)
            {
                this.uri = uri;
            }
        }
    
        public class OMSTR : MMTTerm
        {
            [JsonProperty("float")]
            public string s;
            public string kind = "OMSTR";
    
            public OMSTR(string s)
    
                this.s = s;
    
            }
        }
    
        public class OMF : MMTTerm
        {
            [JsonProperty("float")]
    
            public float f;
    
            public string kind = "OMF";
    
            public OMF(float f)
            {
    
                this.f = f;
    
            }
        }
    
        public class MMTDeclaration
    
            public static MMTDeclaration FromJson(string json)
            {
                MMTDeclaration mmtDecl = JsonConvert.DeserializeObject<MMTDeclaration>(json);
    
                if (mmtDecl.label == null)
                    mmtDecl.label = string.Empty;
    
    
                return mmtDecl;
            }
            public static string ToJson(MMTDeclaration mmtDecl)
            {
    
                if (mmtDecl.label == null)
                    mmtDecl.label = string.Empty;
    
    
                string json = JsonConvert.SerializeObject(mmtDecl);
                return json;
            }
        }
    
    
        /**
         * MMTSymbolDeclaration: Class for facts without values, e.g. Points
    
        public class MMTSymbolDeclaration : MMTDeclaration
    
            public string kind = "general";
    
            public MMTTerm tp;
            public MMTTerm df;
    
            /**
             * Constructor used for sending new declarations to mmt
             */
    
            public MMTSymbolDeclaration(string label, MMTTerm tp, MMTTerm df)
    
            {
                this.label = label;
                this.tp = tp;
                this.df = df;
            }
    
        /**
         * MMTValueDeclaration: Class for facts with values, e.g. Distances or Angles
    
        public class MMTValueDeclaration : MMTDeclaration
    
            public string kind = "veq";
    
            public MMTTerm lhs;
    
            public MMTTerm valueTp;
            public MMTTerm value;
    
            /**
             * Constructor used for sending new declarations to mmt
             */
    
            public MMTValueDeclaration(string label, MMTTerm lhs, MMTTerm valueTp, MMTTerm value)
    
            {
                this.label = label;
                this.lhs = lhs;
    
                this.valueTp = valueTp;
                this.value = value;