dotnetrdf 中的猫头鹰类 rdf

问题描述

使用 dotnetrdf 在下面生成的最佳方法是什么?假设我已经定义了所有命名空间,我正在尝试输出以下内容

<owl:Class rdf:about = "http://my.taxonomies.com/myModel/Lion" >
    <rdfs:label xml:lang = "en"> Lion </ rdfs:label>
    <rdfs:subClassOf> <owl:Class rdf:about = "http://my.taxonomies.com/myModel/Animals" />
    <rdfs:subClassOf>
</owl:Class>

我所经历的教程没有猫头鹰类示例。

谢谢

解决方法

在 dotNetRDF 中创建 OWL 本体时有两种选择。您可以创建一个图并使用 Assert 方法在本体图中断言您想要的三元组(如果您愿意,这是低级 API);或者您可以使用 VDS.RDF.Ontology 命名空间中的辅助类和方法,它们抽象出制作本体图时需要采取的一些步骤。

有关于底层 API here 和本体 API here 的基本操作的文档

这是使用低级 API 创建图表的示例:

var g = new Graph();
// Add namespaces (RDF and RDFS are already declared)
g.NamespaceMap.AddNamespace("owl",UriFactory.Create("http://www.w3.org/2002/07/owl#"));

// Create nodes (this could be done inline in the Assert code if you prefer
var lion = g.CreateUriNode(UriFactory.Create("http://my.taxonomies.com/myModel/Lion"));
var animals = g.CreateUriNode(UriFactory.Create("http://my.taxonomies.com/myModel/Animals"));
var a = g.CreateUriNode("rdf:type");
var owlClass = g.CreateUriNode("owl:Class");
var rdfsLabel = g.CreateUriNode("rdfs:label");
var rdfsSubclassOf = g.CreateUriNode("rdfs:subclassOf");

// Assert triples
g.Assert(lion,a,owlClass);
g.Assert(lion,rdfsLabel,g.CreateLiteralNode("Lion","en"));
g.Assert(lion,rdfsSubclassOf,animals);

当这个图被序列化为 RDF/XML 时,你得到的输出是:

<?xml version="1.0" encoding="utf-16"?>
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <owl:Class rdf:about="http://my.taxonomies.com/myModel/Lion">
    <rdfs:label xml:lang="en">Lion</rdfs:label>
    <rdfs:subclassOf rdf:resource="http://my.taxonomies.com/myModel/Animals" />
  </owl:Class>
</rdf:RDF>

这段代码使用本体助手创建了相同的图:

 var o = new OntologyGraph();
var lion = o.CreateOntologyClass(UriFactory.Create("http://my.taxonomies.com/myModel/Lion"));
lion.AddType(UriFactory.Create(OntologyHelper.OwlClass));
lion.AddLabel("Lion","en");
var animals = o.CreateOntologyClass(UriFactory.Create("http://my.taxonomies.com/myModel/Animals"));
lion.AddSuperClass(animals);

为此图生成的 RDF/XML 与之前相同:

<?xml version="1.0" encoding="utf-16"?>
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <owl:Class rdf:about="http://my.taxonomies.com/myModel/Lion">
    <rdfs:label xml:lang="en">Lion</rdfs:label>
    <rdfs:subClassOf rdf:resource="http://my.taxonomies.com/myModel/Animals" />
  </owl:Class>
</rdf:RDF>

OntologyGraph 类实际上扩展了 Graph,因此您可以混合搭配这些模式,使用其上的低级或高级 API。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...