Извлечение свойств, связанных с классами, из файла RDF - PullRequest
1 голос
/ 02 марта 2012

Я написал свой код для извлечения классов и подклассов из моего RDF-файла .. Это код .. Я использую библиотеку dotNetRDf ..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Linq;
using VDS.RDF;
using VDS.RDF.Ontology;
using VDS.RDF.Parsing;


namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
    //
        OntologyGraph g = new OntologyGraph();
        FileLoader.Load(g, "D:\\SBIRS.owl");
        OntologyClass someClass = g.CreateOntologyClass(new    
        Uri("http://www.semanticweb.org/ontologies/2012/0/SBIRS.owl#Shape"));

                  //Write out Super Classes

        foreach (OntologyClass c in someClass.SuperClasses)
        {
           Console.WriteLine("Super Class: " + c.Resource.ToString());
        }
        //Write out Sub Classes



        foreach (OntologyClass c in someClass.SubClasses)
        {

            Console.WriteLine("Sub Class: " + c.Resource.ToString());
        }
        Console.Read();
    }
}

}

Но сейчася хочу извлечь свойства, связанные с классами .. Я пытался использовать класс OntologyProperty, но не смог получить желаемый результат

1 Ответ

0 голосов
/ 04 марта 2012

Что вы подразумеваете под extract the properties associated with the classes?

Это может означать любое количество вещей, вы имеете в виду просто найти свойства, которые имеют этот класс в качестве домена / диапазона?

Вы не можете сделать это, используя Ontology API, который является просто оболочкой для базовых API, но вы можете использовать API более низкого уровня, например:

//Assuming you've already set up your Graph and Class as above...

//Find properties who have this class as a domain
INode domain = g.CreateUriNode(new Uri(NamespaceMapper.RDFS + "domain"));
IEnumerable<OntologyProperty> ps = g.GetTriplesWithPredicateObject(domain, someClass).Select(t => new OntologyProperty(t.Subject, g));

//Now iterate over ps and do what you want with the properties

Точно так же вы можете сделать то же самое с rdfs:range, чтобы получить свойства, у которых класс находится в диапазоне

...