首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RDF模式验证RDF

如何使用RDF模式验证RDF
EN

Stack Overflow用户
提问于 2012-10-20 01:55:06
回答 3查看 4.3K关注 0票数 4

我正在使用Jena框架来操作RDF文件,但是我找不到一种方法来使用您各自的RDFSchema来验证RDF。我正在尝试下面的方法:

代码语言:javascript
复制
Model mod1 = new ModelMem();
Model modSchema = new ModelMem();
String baseURI = "http://iec.ch/TC57/2007/network";

String rdfPath = "file:D:\\modelo.rdf";
InputStream model = FileManager.get().open(rdfPath);

String rdfPathSchema = "file:D:\\Schema.rdf";
InputStream modelSchema = FileManager.get().open(rdfPathSchema);

mod1.read(model, baseURI, "RDF/XML-ABBREV");
modSchema.read(modelSchema,baseURI,  "RDF/XML-ABBREV");
InfModel infmodel = ModelFactory.createRDFSModel(mod1, modSchema);
ValidityReport validity = infmodel.validate();
return validity.isValid();

但它总是返回true。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-27 01:19:43

我找到了用RDF模式验证RDF的解决方案。存在一个名为CIMValidation的工具。我们可以在应用程序java中使用它,只需将.jar添加到buildpath并使用RDFSValidator类即可。谢谢你所有的回答。

票数 1
EN

Stack Overflow用户

发布于 2012-10-20 02:01:40

您确定仅仅因为您尝试的所有输入都是有效的,它就不会总是返回true吗?您是否尝试过创建相对于模式显式无效的输入,并对其进行了测试?

尽管RDF Schema不像XML schema那样是严格的模式,但您可能想看看Jena Eyeball,这是另一个基于Jena的工具,用于检查RDF,但不确定它是否能完成您想要的工作。

如果您仍然有问题,请尝试询问Jena邮件列表- users@jena.apache.org

编辑

请注意,只有在以与模式不一致的方式使用某些内容时,验证才会返回false。创建您可能认为无效的数据的输入错误和其他用户错误可能仍然与RDF模式完全一致。

例如,假设您有一个简单的RDF模式,如下所示:

代码语言:javascript
复制
:ValidType a rdfs:Class .

:property a rdf:Property ;
          rdfs:domain :ValidType .

因此,此模式声明您有一个类和一个属性,该属性具有该类的域。

然后,用户输入错误,并在其数据中包含以下内容:

代码语言:javascript
复制
:subj a :InvalidType .

这本身并不矛盾,因为RDF有一个开放世界的假设。声明某些内容的类型不在您的RDF模式中并不会导致验证失败,从验证的角度来看,这只是虚假信息。

但是,如果用户随后声明:subj使用了您定义的属性,则如下所示:

代码语言:javascript
复制
:subj a :InvalidType ;
      :property "value" .

现在验证应该返回false,因为数据将与模式不一致,您声明:property只有域:ValidType,但它与:InvalidType类型的资源一起使用,因此这是不一致的,验证应该失败。

票数 1
EN

Stack Overflow用户

发布于 2012-10-22 08:17:43

严格来说,通过Jena或RDFS并不是一个解决方案,但是关于Pellet's ICV capabilities (移植到Stardog,描述为here)的信息可能会有用。但正如Rob所说,这真的归结为开放世界与封闭世界的事情,这使得它有点棘手。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12979797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档