<?xml version="1.0"?>
<rdf:RDF xmlns="urn:absolute:example.com/"
xml:base="urn:absolute:example.com/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="urn:absolute:example.com/"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- urn:absolute:example.com/#CPU -->
<owl:Class rdf:about="urn:absolute:example.com/#CPU">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Hardware"/>
</owl:Class>
<!-- urn:absolute:example.com/#Enduser_Application -->
<owl:Class rdf:about="urn:absolute:example.com/#Enduser_Application">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Software"/>
</owl:Class>
<!-- urn:absolute:example.com/#GPU -->
<owl:Class rdf:about="urn:absolute:example.com/#GPU">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Hardware"/>
</owl:Class>
<!-- urn:absolute:example.com/#HDD -->
<owl:Class rdf:about="urn:absolute:example.com/#HDD">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Storage"/>
</owl:Class>
<!-- urn:absolute:example.com/#Hardware -->
<owl:Class rdf:about="urn:absolute:example.com/#Hardware"/>
<!-- urn:absolute:example.com/#Keyboard -->
<owl:Class rdf:about="urn:absolute:example.com/#Keyboard">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Peripherals"/>
</owl:Class>
<!-- urn:absolute:example.com/#Mainboard -->
<owl:Class rdf:about="urn:absolute:example.com/#Mainboard">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Hardware"/>
</owl:Class>
<!-- urn:absolute:example.com/#Monitor -->
<owl:Class rdf:about="urn:absolute:example.com/#Monitor">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Peripherals"/>
</owl:Class>
<!-- urn:absolute:example.com/#Mouse -->
<owl:Class rdf:about="urn:absolute:example.com/#Mouse">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Peripherals"/>
</owl:Class>
<!-- urn:absolute:example.com/#Operating_System -->
<owl:Class rdf:about="urn:absolute:example.com/#Operating_System">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Software"/>
</owl:Class>
<!-- urn:absolute:example.com/#Peripherals -->
<owl:Class rdf:about="urn:absolute:example.com/#Peripherals">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Hardware"/>
</owl:Class>
<!-- urn:absolute:example.com/#Printer -->
<owl:Class rdf:about="urn:absolute:example.com/#Printer">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Peripherals"/>
</owl:Class>
<!-- urn:absolute:example.com/#SSD -->
<owl:Class rdf:about="urn:absolute:example.com/#SSD">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Storage"/>
</owl:Class>
<!-- urn:absolute:example.com/#Software -->
<owl:Class rdf:about="urn:absolute:example.com/#Software"/>
<!-- urn:absolute:example.com/#Storage -->
<owl:Class rdf:about="urn:absolute:example.com/#Storage">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Hardware"/>
</owl:Class>
<!-- urn:absolute:example.com/#Video_Game -->
<owl:Class rdf:about="urn:absolute:example.com/#Video_Game">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Enduser_Application"/>
</owl:Class>
<!-- urn:absolute:example.com/#Word_Processor -->
<owl:Class rdf:about="urn:absolute:example.com/#Word_Processor">
<rdfs:subClassOf rdf:resource="urn:absolute:example.com/#Enduser_Application"/>
</owl:Class>
</rdf:RDF>
<!-- Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi -->
Thing
|-- Hardware
|-- CPU
|-- GPU
|-- Mainboard
|-- Peripherals
|-- Keyboard
|-- Monitor
|-- Mouse
|-- Printer
|-- Storage
|-- HDD
|-- SSD
|-- Software
|-- Enduser_Application
|-- Video_Game
|-- Word_Processor
|-- Operating_System
我已经试过几种不同的方法了。
>
使用Apache Jena
Model model = ModelFactory.createOntologyModel();
model.read(ontology, "OWL");
model.write(new BufferedWriter(f), "JSON-LD");
这似乎是目前“最好的”工作。我最终得到一个包含JSON-LD数据的字符串,它是一个树状表示。但是类关系是颠倒的:
我注意到JSON-LD有一个所谓的“框架”特性,它基本上允许您将数据重新放入定义的框架中。
我将JSON-LD的@reverse
关键字与rdfs:subclassof
结合起来进行了修改,希望从本质上颠倒关系。但是,我也不能让它起作用,而且我对JSON-LD也不是很有经验。因此,我有些挣扎。
这已经导致了我的一些不眠之夜。如果有人知道这个问题的解决方法,或者只是能给我如何解决这个问题的提示,我会很高兴的。
我检查了一下,我确实能够使用OWL API加载您的本体并将其保存为JsonLD格式。不过,我怀疑它能解决你的问题,就像@Ignazio指出的那样。为了打印出树结构,您需要访问一个推理器,从中可以查询包含关系。
这里有一个代码样例,装载和保存你的本体,并将它打印在树状结构中。
private static Logger logger = LoggerFactory
.getLogger(owl.api.test.StandaloneOWLNamedIndividualRetrievalv5.AppHardwareTest.class);
// Why This Failure marker
private static final Marker WTF_MARKER = MarkerFactory.getMarker("WTF");
static OWLReasoner reasoner;
static void printChildren(NodeSet<OWLClass> owlClasses) {
for (Node<OWLClass> node : owlClasses) {
logger.trace(node.getRepresentativeElement().toString());
if (!node.getRepresentativeElement().isBottomEntity())
printChildren(reasoner.getSubClasses(node.getRepresentativeElement()));
}
}
public static void main(String[] args) {
try {
// Setup physical IRI for storing ontology
Path path = Paths.get(".").toAbsolutePath().normalize();
IRI loadDocumentIRI = IRI.create("file:" + path.toFile().getAbsolutePath() + "/hardware.owl");
IRI saveDocumentIRI = IRI.create("file:" + path.toFile().getAbsolutePath() + "/hardwareSave.txt");
// Initialize
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(loadDocumentIRI);
// Write to JsonLD format
OWLDocumentFormat ontologyFormat = new RDFJsonLDDocumentFormat();
manager.saveOntology(ontology, ontologyFormat, saveDocumentIRI);
// Print tree structure
OWLReasonerFactory reasonerFactory = new JFactFactory();
reasoner = reasonerFactory.createReasoner(ontology);
Node<OWLClass> top = reasoner.getTopClassNode();
logger.trace(top.getRepresentativeElement().toString());
printChildren(reasoner.getSubClasses(top.getRepresentativeElement()));
} catch (Throwable t) {
logger.error(WTF_MARKER, t.getMessage(), t);
}
}
希望有帮助。祝你好运.
我想问Java中是否有一种方法可以读取,基本上是任何文件格式(N3,JSON,RDF-XML)等,然后将其转换为海龟(. ttl)。我在谷歌上搜索了一些想法,但他们主要只是解释特定的文件类型以及如何将文件类型转换为RDF,而我希望它以另一种方式。 编辑(按照答案中给出的代码示例): 我已将“eclipse-rdf4j-3.0.3-onejar.jar”添加到NetBeans中的Libraries文
问题内容: 我是json的新手。我有一个程序可以从json对象生成xml。 输出为: 我最大的问题是如何编写自己的属性而不是json_type =“ number”,以及如何编写自己的子元素,例如。 问题答案: 使用中的(优秀)JSON-Java库,然后 可以使用第二个参数来提供XML根节点的名称。 该库还能够使用以下命令将XML转换为JSON POM
问题内容: 我在SO上看到许多问题,询问将XML转换为JSON的方法,但我对采用其他方法感兴趣。是否有用于将JSON转换为XML的python库? 编辑: 什么都没有马上回来,所以我继续写了一个脚本来解决这个问题。 Python已经允许您将JSON转换为本地dict(使用或在版本2.6以下的中,),因此我编写了一个库,可将本地dict 转换为XML字符串。 https://github.com/q
我希望通过一个Thymeleaf变量数组来生成JSON-LD(使用Schema.org),类似于Google的商店部门示例。 我知道您可以在HTML中遍历Thymeleaf中的数组,如下所示: 有没有办法将其转换为JSON-LD格式?
问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X
问题内容: 有什么好的工具可以在Java中快速轻松地将XML转换为JSON? 问题答案: Java中的 JSON有一些很棒的资源。 Maven依赖项: XML.java 是您要寻找的课程: 输出为: