例子:
http://data.doremus.org/activity/587ae689-790e-3525-9e3a-dac63f449a03
Run Code Online (Sandbox Code Playgroud)
我认为它是一个IRI,也是一个URI。(我对吗?)
我使用 OWL API 来解析它。在“IRI”类中,有一个方法getShortForm(),当我使用它时,我得到“ae689-790e-3525-9e3a-dac63f449a03”。
关于URI,我认为它的本地名称是“587ae689-790e-3525-9e3a-dac63f449a03”。我不太确定。其实我是从别人的博客上知道“土名”这个词的。我在 URI 的结构中找不到“本地名称”,如下所示。
Run Code Online (Sandbox Code Playgroud)scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
所以,我有两个问题:
IRI 的简称是什么?为什么示例的简写形式不是“587ae689-790e-3525-9e3a-dac63f449a03”?
URI 的本地名称是什么?示例的本地名称是什么?
我正在使用这个基于数据的知识类,我试图弄清楚如何安装第一个OWL API.首先,我在Protege中创建一个.owl文件.我的老师告诉我们,我们必须编写一个小的Java程序来读取我们的.owl文件.他告诉我们要包含OWL API; 他没有给出任何关于OWL API的说明和任何讲座.你知道我如何安装OWL API是非常令人困惑的吗?如果有任何好的教程解释如何将.owl文件实现到Java程序中?
谢谢
如何使用owlapi从加载的本体中获取所有类?在这里,我有一个关于如何获取一个类的示例,但是我对访问本体中定义的所有类感兴趣。
OWLOntologyManager manager = WLManager.createOWLOntologyManager();
OWLOntology ontology = manager.loadOntology(IRI.create(fileURI));
OWLDataFactory owlDF = manager.getOWLDataFactory();
//Example to get ONE class, but I want ALL!
OWLClass stringDocuClass = owlDF.getOWLClass(IRI.create("http://example.com/my_ontology.owl#StringDocu"));
Run Code Online (Sandbox Code Playgroud)
我正在使用Java owlapi 4.2.3(请参阅API:http ://owlapi.sourceforge.net/javadoc/ )
所以我已经能够将一些类添加到本体中并将它们保存到文件中。现在我希望能够向我的类添加数据类型,但我对如何做这可能非常简单的事情感到困惑。这就是我一直在尝试的:
OWLClass currentClass =df.getOWLClass(IRI.create("Base"));
OWLDataProperty owlAttr = df.getOWLDataProperty(IRI.create("#" + "name");
OWLLiteralImplString lit = new OWLLiteralImplString("test"); //This is probably on the wrong path
DefaultPrefixManager defaultPrefixManager = new DefaultPrefixManager();
OWLDatatype datatype = df.getOWLDatatype("xsd:string",defaultPrefixManager);
OWLAxiom axiom = df.getOWLDatatypeDefinitionAxiom(datatype, ?); //having trouble find a range.
Run Code Online (Sandbox Code Playgroud)
编辑 #1 所以我有点担心我的问题不清楚。我想做的事情与 Java 中的类似:
public class Car{
}
Run Code Online (Sandbox Code Playgroud)
我目前可以使用 owlapi 创建一个类,但我想要做的就像向我的 Java 类添加一个数据成员:
public class Car{
public String manufacturer;
}
Run Code Online (Sandbox Code Playgroud)
使用Protege我可以生成这个,我认为这就是我想要用 owlapi 生成的:
<!-- http://www.co-ode.org/ontologies/ont.owl#manufacturer -->
<DatatypeProperty rdf:about="http://www.co-ode.org/ontologies/ont.owl#manufacturer">
<rdfs:domain rdf:resource="http://www.co-ode.org/ontologies/ont.owl#Car"/>
<rdfs:range rdf:resource="&xsd;string"/>
</DatatypeProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////
// …Run Code Online (Sandbox Code Playgroud) 如何在Java中使用owlapi找到所有已定义的类?我知道不推荐使用的getClassesInSignature方法,但是文档(JavaDocs)缺少方面,应该使用什么代替?
在一个.owl文件中,我声明了一些前缀,如下所示:
Prefix(:=<http://default.ont/my_ont/>)
Prefix(ex:=<http://example.org/ex#>)
Prefix(ex2:=<http://example2.org/ex#>)
...
Run Code Online (Sandbox Code Playgroud)
在 Java 项目中使用我的本体,如下所示:
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File(resourceFullPath(ontologyFilename)));
Run Code Online (Sandbox Code Playgroud)
现在我想Map<String, String>以编程方式构建一个包含以下内容的程序:
{
"" -> "http://default.ont/my_ont/",
"ex" -> "http://example.org/ex#",
"ex2" -> "http://example2.org/ex#"
}
Run Code Online (Sandbox Code Playgroud)
我如何使用OWL API执行此操作(即无需.owl自己解析文件)?
我可以知道Apahe JENA是否在Java中支持OWL 2语法?它确实提到在文档(https://jena.apache.org/documentation/ontology/)中,它仅提供了有限的基数限制。我想向专家们证实这一点。
owl-api ×8
owl ×5
java ×3
ontology ×2
iri ×1
jena ×1
jena-rules ×1
namespaces ×1
prefix ×1
protege ×1
semantic-web ×1
stream ×1
uri ×1