public void GetNTriplesRecursively() { NTripleCollection nTriples = reader.GetTriplesRecursvely(MockFolderPath + "skos_categories_en.nt", "http://dbpedia.org/resource/Category:Wars"); Assert.AreEqual(4, nTriples.Triples.Count); Assert.IsTrue(nTriples.Triples.Any(x => x.Triple.Item1 == "http://dbpedia.org/resource/Category:Vietnam_War")); Assert.IsTrue(nTriples.Triples.Any(x => x.Triple.Item1 == "http://dbpedia.org/resource/Category:World_War_II")); }
public void ReadNTripleFile() { NTripleCollection nTriples = reader.ReadFile(MockFolderPath + "skos_categories_en.nt"); Assert.AreEqual(16, nTriples.Triples.Count); Assert.AreEqual("http://dbpedia.org/resource/Category:Futurama", nTriples.Triples[4].Triple.Item1); Assert.AreEqual("http://www.w3.org/2004/02/skos/core#broader", nTriples.Triples[4].Triple.Item2); Assert.AreEqual("http://dbpedia.org/resource/Category:Works_by_Matt_Groening", nTriples.Triples[4].Triple.Item3); }
public void AddWikipediaLinks() { List <Individual> individuals = MockIndividuals(); NTripleCollection wikipediLinks = reader.ReadFile(MockFolderPath + "wikipedia_links_en.nt"); individuals = generator.AddWikipediaLinks(individuals, wikipediLinks); Assert.AreEqual("http://en.wikipedia.org/wiki/Anchor", individuals.Single(x => x.Name == "Anchor").WikipediaLink); Assert.AreEqual("http://en.wikipedia.org/wiki/Keel", individuals.Single(x => x.Name == "Keel").WikipediaLink); }
public void GenerateIndividualFromNTriple() { NTripleCollection nTriples = reader.ReadFile(MockFolderPath + "article_categories_en.nt"); List <Individual> individuals = new List <Individual>(); nTriples.Triples.ForEach(x => individuals.Add(new Individual(x))); Assert.AreEqual(4, individuals.Count); Assert.IsTrue(individuals.Single(x => x.Name == "Operation_Brushwood").Category == "World_War_II"); }
public void GenerateEntityFromNTriple() { NTripleCollection nTriples = reader.ReadFile(MockFolderPath + "skos_categories_en.nt"); List <Entity> entities = new List <Entity>(); nTriples.Triples.ForEach(x => entities.Add(new Entity(x))); Assert.AreEqual(16, entities.Count); Assert.IsTrue(entities.Single(x => x.Name == "Wars_involving_the_United_States").Parent == "Wars_by_country"); }
public void AddShortAbstracts() { List <Individual> individuals = MockIndividuals(); NTripleCollection shortAbstracts = reader.ReadFile(MockFolderPath + "short_abstracts_en.nt"); individuals = generator.AddShortAbstracts(individuals, shortAbstracts); Assert.IsTrue(individuals.Single(x => x.Name == "Anchor").ShortAbstract.StartsWith("An anchor is a device, normally made of metal, that is used")); Assert.IsTrue(individuals.Single(x => x.Name == "Keel").ShortAbstract.StartsWith("In boats and ships, keel can refer to either")); }
public List <Individual> AddShortAbstracts(List <Individual> individuals, NTripleCollection shortAbstracts) { foreach (Individual i in individuals) { NTriple triple = shortAbstracts.Triples.Where(x => x.Triple.Item1 == "http://dbpedia.org/resource/" + i.Name && x.Triple.Item2 == "http://www.w3.org/2000/01/rdf-schema#comment").FirstOrDefault(); if (triple != null) { i.ShortAbstract = triple.Triple.Item3; } } return(individuals); }
public List <Individual> AddWikipediaLinks(List <Individual> individuals, NTripleCollection wikipediaLinks) { foreach (Individual i in individuals) { NTriple triple = wikipediaLinks.Triples.Where(x => x.Triple.Item3 == "http://dbpedia.org/resource/" + i.Name && x.Triple.Item2 == "http://xmlns.com/foaf/0.1/primaryTopic").FirstOrDefault(); if (triple != null) { i.WikipediaLink = triple.Triple.Item1; } } return(individuals); }
static void Main(string[] args) { try { string path = args[0] + @"\"; Console.WriteLine("Starting..."); const string RootCategory = "http://dbpedia.org/resource/Category:Nautical_terms"; NTripleReader reader = new NTripleReader(); Console.WriteLine("Reading N-triples..."); NTripleCollection skolCategories = reader.GetTriplesRecursvely(path + "skos_categories_en.nt", RootCategory); List <string> categories = skolCategories.Subjects; categories.Add(RootCategory); NTripleCollection articleCategories = reader.GetTriples(path + "article_categories_en.nt", categories, NTripleReader.NtripleSearchType.Object); NTripleCollection wikipediLinks = reader.GetTriples(path + "wikipedia_links_en.nt", articleCategories.Subjects, NTripleReader.NtripleSearchType.Object); NTripleCollection shortAbstracts = reader.GetTriples(path + "short_abstracts_en.nt", articleCategories.Subjects, NTripleReader.NtripleSearchType.Subject); Console.WriteLine("Reading N-triples... - Done"); List <Entity> entities = skolCategories.Triples.Select(x => new Entity(x)).ToList(); List <Individual> individuals = articleCategories.Triples.Select(x => new Individual(x)).ToList(); OntologyGenerator ontologyGenerator = new OntologyGenerator(); List <Entity> individualEntities = ontologyGenerator.GenerateEntityForEachIndividual(individuals); entities.AddRange(individualEntities); Console.WriteLine("Adding Wikipedia links and short abstracts..."); individuals = ontologyGenerator.AddWikipediaLinks(individuals, wikipediLinks); individuals = ontologyGenerator.AddShortAbstracts(individuals, shortAbstracts); Console.WriteLine("Adding Wikipedia links and short abstracts... - Done"); Console.WriteLine("Generating ontology..."); XmlDocument owl = new OwlGenerator().Generate(entities, individuals); Console.WriteLine("Generating ontology... - Done"); string fileName = "generatedOntology_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".owl"; owl.Save(fileName); Console.WriteLine("Ontology file [" + fileName + "]"); Console.WriteLine("Done"); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); Console.Write(e.StackTrace); } Console.ReadKey(); }
public NTripleCollection GetTriplesRecursvely(string path, List <string> filters) { NTripleCollection nTripleCollection = GetTriples(path, filters, NtripleSearchType.Object); bool newTriplesFound = true; while (newTriplesFound) { List <string> subjects = nTripleCollection.Subjects; int before = nTripleCollection.Triples.Count; nTripleCollection.AddTriples(GetTriples(path, subjects, NtripleSearchType.Object).Triples); int after = nTripleCollection.Triples.Count; newTriplesFound = after > before; } return(nTripleCollection); }
public NTripleCollection GetTriples(string path, List <string> nTriples, NtripleSearchType searchType) { int searchTypeIndex = GetSearchTripeIndex(searchType); Console.WriteLine("Reading triples from " + path); NTripleCollection nTripleCollection = new NTripleCollection(); long currentLine = 0; StreamReader reader = new StreamReader(path); string[] nTriplesFormatted = nTriples.Select(x => "<" + x + ">").ToArray(); while (!reader.EndOfStream) { currentLine++; Console.Write("\rLine {0}", currentLine); string line = reader.ReadLine(); if (nTriplesFormatted.Length == 0) { string[] values = line.Split('>'); nTripleCollection.Triples.Add(new NTriple(RemoveUnwantedChars(values[0]), RemoveUnwantedChars(values[1]), RemoveUnwantedChars(values[2]))); } else { for (int i = 0; i < nTriplesFormatted.Length; i++) { if (line.Contains(nTriplesFormatted[i])) { string[] values = line.Split('>'); if (nTriples.Count == 0 || nTriples.Any(x => values[searchTypeIndex].Contains(x))) { nTripleCollection.Triples.Add(new NTriple(RemoveUnwantedChars(values[0]), RemoveUnwantedChars(values[1]), RemoveUnwantedChars(values[2]))); break; } } } } } Console.WriteLine(Environment.NewLine + "Reading triples from " + path + " - Done"); reader.Close(); return(nTripleCollection); }