- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个本体,我和 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/
我想用前缀来表示这个nt文件: . "a" . "b" . "c" . 我写入一个新的nt文件是: @prefix sp: . . "a" . "b" . "c"
我有一个名为 Modelling.owl 的 OWL 文件,它是使用 Protege 4.2 创建的。但是后来我必须通过使用 Jena 注册一些新的 Individual 和它的属性来修改它。例如我有
我正在尝试使用 Jena 写入本地免费的独立 GraphDB(版本 8.5.0)存储库。 我尝试过的 (1) 耶拿直接使用 我使用了这个 Jena 3.7.0 代码片段: String strInse
我无法在我的 Ontology 中表达以下情况: 假设我有四个人投票,投了四票(所以 vote 和 voter 之间存在一对一的映射)。人们可以投票赞成或反对。如果我知道三个人的投票结果,我应该能够推
我在我的项目中使用 Dbpedia,我想创建一个本地 sparql 端点,因为在线端点不可靠。我下载了数据转储(大型 NT 文件)并决定使用 Jena TDB。使用 NetBeans IDE,我使用输
我用这个java代码在jena中创建了一个模型 Model m = ModelFactory.createDefaultModel(); Resource a1 = m.createR
我有一个猫头鹰本体,我将它读入 Jena OntModel。然后我在运行时更新它。现在我想把它写回一个OWL 本体。我正在使用下面的代码: RDFWriter writer = model.getWr
我将 Jena 和 Fuseki 安装为服务使用 一个可靠的角色 gremid.fuseki . 而且我想自定义监听主机和监听端口。但是,我不知道。 也许我应该编辑$FUSEKI_BASE/confi
我正在对基于本体的上下文管理和基于流程的上下文管理进行性能分析。然而,为了创建与 PCM 案例研究类似的场景,我需要在推理过程中直接从 Jena SWRL 规则触发 Java 方法。我做了很多研究,但
我正在使用 SPARQL 查询查询整数结果: String qString = "SELECT (COUNT(?S) AS ?C) "+ "WHERE
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 8年前关闭。 Improve t
我无法找到一些使用 SWRL 和 Jena 的简单代码示例佩莱,或者至少使用 SWRL?我研究了 Pellet 文档中的一些示例,但没有关于使用 SWRL 的示例。网络上的大多数示例都不完整且令人困惑
我对 RDF 和 Jena 很陌生。我想将一个 .nt (N-TRIPLE) 文件加载到模型中。我试过 read(inputStream, "N-TRIPLE") 但没有帮助。 它抛出 org.apa
我成功地使用 Jena API 和 Eclipse 创建、修改、合并本体。我还在 Eclipse 中成功启动了 OWL 推理器和 Pellet 推理器。 现在我想了解如何使用 Jena API 在 E
我正在尝试使用 Jena 框架来编辑使用 Protoge 4.2 构建的现有本体。即更改属性值或添加个人或类别,然后进行推理。假设在本体中我们有这样的规则:hasAge(?p,?age)^swrlb:
我了解到您可以使用以下代码提取 rdf 文件并初始化为 jena 中的模型: DatasetAccessor accessor = DatasetAccessorFactory.createHTTP(
我目前正在开发一个项目,初始值为 .owl包含我们本体的基本模式的文件。我们使用 Jena API 加载此文件并对其执行不同的操作,例如添加本体类和个体。 我们寻求将系统迁移到三重存储,这意味着,而不
这是我的代码: public class FunctionalityCheckTest1 { InfModel infModel; Model model = ModelFactory
我使用Jena和TDB来存储RDF,我想对其进行一些推断。但是RDF数据很大,Jena的owl reasoner必须将所有数据加载到内存中。 所以我想找到一个可以推理而不将所有数据加载到内存中的推理器
我建立了一个使用SWRL规则进行推理的本体。当我在Protege中执行SQWRL查询时,它工作正常。问题是,当我想将Pellet与Jena一起使用时,Pellet似乎在查询中不包括SWRL规则。我像这
我是一名优秀的程序员,十分优秀!