gpt4 book ai didi

java - 用 Jena 读取 Ontology,用 RDF 三元组喂养它,并产生正确的 RDF 字符串输出

转载 作者:行者123 更新时间:2023-11-29 07:22:02 25 4
gpt4 key购买 nike

我有一个本体,我和 Jena 一起阅读它以帮助我从网站上抓取一些 RDFa 三元组。我目前没有将这些三元组存储在 Jena 模型中,但这样做相当简单,它在我的下一个待办事项列表中。

不过,我正在努力解决的问题是让 Jena 为我拥有的本体输出正确的 RDF。本体使用 Owl 和 RDFS 定义,但是当我将一些示例三元组传递到模型中时,它们显示不正确。几乎就好像它对本体一无所知。然而,输出仍然是有效的 RDF,只是它不是以我希望的形式出现。

我是否正确地认为 Jena 应该能够根据本体生成关于我收集的三元组的写得很好的 RDF(而不仅仅是有效的),或者这是否扩展了它的能力?

非常感谢任何输入。

更新 1

例子:

这是我们目前拥有的:

<rdf:Description rdf:about='http://theinternet.com/%3fq=Club/325'>
<j.0:hasName>Manchester United</j.0:hasName>
<j.0:hasPlayer>
<rdf:Description rdf:about='http://theinternet.com/%3fq=player/291/'>
</rdf:Description>
</j.0:hasPlayer>
<j.0:hasEmblem>http://theinternet.com/images/manutd.jpg</j.0:hasEmblem>
<j.0:hasWebsite>http://www.manutd.com/</j.0:hasWebsite>
</rdf:Description>

</rdf:RDF>

这就是我们理想中想要的:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:ontology="http://theinternet.com/ontology.rdf#">

<rdf:Description rdf:about='http://theinternet.com/%3fq=Club/325'>
<rdf:type rdf:resource='ontology:Club' />
<ontology:hasName>Manchester United</ontology:hasName>
<ontology:hasPlayer>
<rdf:Description rdf:about='http://theinternet.com/%3fq=player/291/'>
<rdf:type rdf:resource='ontology:Player' />
</rdf:Description>
</ontology:hasPlayer>
<ontology:hasEmblem>http://theinternet.com/images/manutd.jpg</ontology:hasEmblem>
<ontology:hasWebsite>http://www.manutd.com/</ontology:hasWebsite>
</rdf:Description>

</rdf:RDF>

对我来说,Jena 似乎缺少与本体有关的东西,例如资源类型等。我有这种感觉,我错误地使用了 Jena。

最佳答案

如果你想要写得好 rdf(我假设是xml)使用RDF/XML-ABBREV作家。默认值通常很好,但是您会发现 tuning instructions here .

如果没有问题输出示例,很难知道您的问题是什么。你看到类似 <j.0:SomeClass> 的东西了吗? ?那是一个前缀问题。如果它们是在原始 RDFa 文档中定义的,那么您可能会以某种方式丢失它们,但它应该很容易修复。否则,您可以使用 PrefixMapping 中的方法在模型上手动设置它们(Model 扩展)。

更新的答案

感谢您提供示例。前缀是这里的主要问题。

model.setNsPrefix("ontology", "http://theinternet.com/ontology.rdf#");
model.setNsPrefix("dc", DC_11.NS);
model.setNsPrefix("owl", OWL.NS);
model.setNsPrefix("rdfs", RDFS.NS);
model.setNsPrefix("xsd", XSD.NS);

( DC_11.NS jena vocabulary package 中定义)

请注意 rdf:resource (如 rdf:about )需要一个完整的 URI,所以

<rdf:type rdf:resource='ontology:Club' />

不起作用。使用 showDoctypeDeclaration option将使用 XML 实体进行缩写。

顺便说一下,您使用的是哪个 RDFa 解析器?前缀定义应该通过。

关于java - 用 Jena 读取 Ontology,用 RDF 三元组喂养它,并产生正确的 RDF 字符串输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com