2014-09-03 103 views
1

我已经为Books定义了一个rdf类。 另一个用于描述人的rdf类。 Book类包含将book实例链接到人员实例的authoredBy字段。图书sparql DESCRIBE查询获取关于链接对象的数据

Book -Id -name -authoredBy

Person -id -firstName -LastName -designation

属性对于检索书的属性,我用下面的SPARQL查询

表示书本 WHERE { 书RDF:??书;

}

我能够检索所有属于使用DESCRIBE即谓语,主体与客体,以预订的属性。但是,当涉及到authoredBy字段时,上述查询仅返回作者的URI。

我希望看到所有属于作者的谓词(即它的名字,姓氏)。上面的DESCRIBE查询可以修改来实现这个吗?

回答

4

皆属于使用DESCRIBE

属性不来预订属性 “属于” 的事情。 OWL不是一种面向对象的编程语言。


但是,您当然可以获取书籍及其作者的属性和值。 描述的特定结果查询是依赖于实现的。即使你正在使用的实现给你一定的结果,但不能保证其他实现会给你这样的结果。使用构造查询更安全。在你的情况,这听起来像你想

construct where { 
    ?book a ex:Book ; 
     ?p ?o ; 
     ex:authoredBy* ?author . 
    ?author ?ap ?ao . 
} 

这将返回所有书籍及其作者的所有三元组的图形。


我用下面的SPARQL查询

DESCRIBE ?book WHERE { ?book a rdf:Book ; 

} 

注意,你真的不应该定义在RDF命名空间中你自己的条件(例如,你有RDF:书)。你应该为你自己的类使用一些其他的命名空间。