我为Books定义了一个rdf类。 另一个用于描述人的rdf类。 Book类包含authoredBy字段,该字段将书籍实例链接到人员实例。
书的属性
Book
-Id
-name
-authoredBy
Person
-id
-firstName
-LastName
-designation
为了检索书籍属性,我使用以下sparql查询
DESCRIBE?书 哪里 { ?预订rdf:Book;
}
我能够使用DESCRIBE检索属于Book的所有属性,即谓词,主题和对象。但是,当涉及到authoredBy字段时,上面的查询只返回作者的URI。
我希望看到属于作者的所有谓词(即它的名字,姓氏)。是否可以修改上述DESCRIBE查询以实现此目的?
答案 0 :(得分:4)
使用DESCRIBE
属于Book的所有属性
属性不属于"属于"事情。 OWL不是面向对象的编程语言。
但是,您当然可以获得书籍及其作者的属性和价值。 describe 查询的特定结果取决于实现。尽管您使用的实施方案可以为您提供一定的结果,但并不能保证其他实施方案能够为您提供这些结果。使用构造查询更安全。在你的情况下,听起来像你想要的
construct where {
?book a ex:Book ;
?p ?o ;
ex:authoredBy* ?author .
?author ?ap ?ao .
}
这将返回关于所有书籍及其作者的所有三元组的图表。
我使用以下sparql查询
DESCRIBE ?book WHERE { ?book a rdf:Book ; }
请注意,您确实不应该在RDF命名空间中定义自己的术语(例如,与 rdf:Book 一样)。您应该为自己的类使用一些其他命名空间。