示例#1
0
        public frmNamedEntities(SemanticDatabase db, NamedEntity selected)
        {
            InitializeComponent();

            int selIndex = db.NamedEntities.Values.ToList().IndexOf(selected);

            NamedEntities = db.NamedEntities.SerializeClone();

            RefreshNamedEntityList(NamedEntities.Values.ToList());

            lvNamedEntities.Items[selIndex].Selected = true;

            lvNamedEntities.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
        }
示例#2
0
        public void Open(string filename, List <Frame> frames)
        {
            var frameInstances = new Dictionary <int, FrameInstance>();
            var xdoc           = XDocument.Load(filename);

            if (xdoc != null)
            {
                foreach (var entityEl in xdoc.Root.Element("NamedEntities").Elements("NamedEntity"))
                {
                    var entity = new NamedEntity();
                    entity.ID   = int.Parse(entityEl.Attribute("ID").Value);
                    entity.Name = entityEl.Element("PrimeAlias").Attribute("Label").Value;
                    entity.Type = entityEl.Attribute("Type").Value;

                    foreach (var aliasEl in entityEl.Elements("Alias"))
                    {
                        entity.AliasSet.Add(aliasEl.Attribute("Label").Value);
                    }

                    NamedEntities.Add(entity.ID, entity);
                }

                if (xdoc.Root.Element("Frames") != null)
                {
                    foreach (var frameEl in xdoc.Root.Element("Frames").Elements("Frame"))
                    {
                        var frameInst = new FrameInstance();
                        frameInst.TargetID   = int.Parse(frameEl.Attribute("TargetID").Value);
                        frameInst.SentenceID = frameEl.Attribute("SentenceID").Value;
                        frameInst.WordIndex  = int.Parse(frameEl.Attribute("WordIndex").Value);

                        if (frameEl.Attribute("TypeLV") != null)
                        {
                            frameInst.TypeLV = frameEl.Attribute("TypeLV").Value;
                        }

                        var type = frameEl.Attribute("Type").Value;
                        frameInst.Frame = frames.FirstOrDefault(o => o.Name == type);

                        foreach (var elementEl in frameEl.Elements("Element"))
                        {
                            var elementName  = elementEl.Attribute("Name").Value;
                            var frameElement = frameInst.Frame.Elements.FirstOrDefault(o => o.Name == elementName);

                            var refId       = int.Parse(elementEl.Attribute("RefID").Value);
                            var wordIndex   = int.Parse(elementEl.Attribute("WordIndex").Value);
                            var elReference = new Reference {
                                ID = refId, WordIndex = wordIndex
                            };
                            frameInst.ElementReferences.Add(frameElement, elReference);
                        }

                        foreach (var markerEl in frameEl.Elements("Marker"))
                        {
                            frameInst.Marker   = new LayoutMarker();
                            frameInst.Marker.X = int.Parse(markerEl.Attribute("X").Value);
                            frameInst.Marker.Y = int.Parse(markerEl.Attribute("Y").Value);
                        }

                        frameInstances.Add(frameInst.TargetID, frameInst);
                    }
                }

                foreach (var frameInst in frameInstances)
                {
                    NamedEntities[frameInst.Value.TargetID].Frames.Add(frameInst.Value);
                }
            }
        }