从 .NET 创建 Protege Readable Ontology

Create Protege Readable Ontology from .NET

我正在尝试从 .NET 创建一个可读的门生 ontology。

我从一个 4GB 的 .nt 文件开始,解析出所需的 类 和我希望使用的实例。这些存储在内存中,因为我将它减少到不到 1 分钟和大约 1GB。它们现在的形式是 Dictionary<String,HashSet<String>>。下一步是获取该数据并将其移动到 OWL Ontology 中。有什么地方可以开始如何手动循环并执行此操作?我的所有研究都指向我使用 Manchester OWL,但我能找到的所有东西都与不符合我需要的现有工具一起使用。我正在寻找可能使用 LINQ to XML 做一个简单的循环,我不确定如何格式化它或在哪里寻找如何做到这一点。

谢谢 吉米

你可以从这个开始

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string definition =
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<Ontology xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
                    " xsi:schemaLocation=\"http://www.w3.org/2002/07/owl# http://www.w3.org/2009/09/owl2-xml.xsd\"" +
                    " xmlns=\"http://www.w3.org/2002/07/owl#\"" +
                    " xml:base=\"http://example.com/myOntology\"" +
                    " ontologyIRI=\"http://example.com/myOntology\">" +
                "</Ontology>";

            XDocument doc = XDocument.Parse(definition);
            XElement ontology = (XElement)doc.FirstNode;
            XNamespace ns = ontology.Name.Namespace;

            ontology.Add(new XElement[] {
                new XElement(ns + "Prefix", new XAttribute[] {
                       new XAttribute("name", "myOnt"),
                       new XAttribute("IRI", "http://example.com/myOntology#")
                }),
                new XElement(ns + "Import", "http://example.com/someOtherOntology")
            });

        }
    }
}
​