在 SPARQL 中,我可以区分关系和属性键吗?
Posted
技术标签:
【中文标题】在 SPARQL 中,我可以区分关系和属性键吗?【英文标题】:In SPARQL, can I distinguish between relationships and property keys? 【发布时间】:2014-02-05 21:41:22 【问题描述】:在 Neo4j 快速查询窗格中,有“关系类型”和“属性键”,它们在 Neo4j cypher 查询语法的上下文中是有意义的。
在 SPARQL 中,有没有办法区分作为关系的三元组和作为属性的三元组?
我想一些示例数据可能如下所示:
<actor12> <http://some.ontology.com/#ActedIn> <movie45> #relationship
<movie45> <http://some.ontology.com/#title> “Gone with the Wind" #property key/val
【问题讨论】:
【参考方案1】:SPARQL 是一种针对特定数据模型的查询语言,由 RDF 数据定义。通常用于查询RDF或OWL数据。
RDF 定义了properties,但没有在对象引用属性和数据引用属性中区分它们。您可以通过检查它们的范围来间接区分它们。如果它们的范围是XSD 属性,那么您可以推断它是一个数据引用属性。
OWL 实际上对这两种属性进行了形式上的区分。它们被称为 object properties 和 data properties。因此,如果您使用 OWL 数据模型,您可以直接通过其 OWL 类来识别属性的类型。你称之为“关系类型”的那些实际上是“对象属性”,而你称之为“属性键”的那些是 OWL 术语中的“数据属性”。它们分别被标识为owl:ObjectProperty和owl:DatatypeProperty类的实例。
希望我能帮上忙!
【讨论】:
【参考方案2】:您可以通过测试对象是否为文字来检查数据:
?s ?p ?o
FILTER (isLiteral(?o) )
【讨论】:
你能详细说明一下吗? @Kristian 您所称的属性键将 RDF 文字作为值,而不是 URI 或空白节点。如果搜索?s ?p ?o
并且只接受 ?o
是文字的匹配项,那么每个 ?p
将是一个数据类型属性(在 OWL 中)。实际上,这并不完全正确,因为注解属性也可以具有字面值,但想法是存在的:如果您查找具有字面值的属性,那么您会找到具有字面值的属性。【参考方案3】:
Pantelis Natsiavas 正确地points out 在 OWL 中您可以区分对象和数据类型属性。您询问了如何在 SPARQL 中执行此操作。 owl:DatatypeProperty
和 owl:ObjectProperty
是 RDFS 类,因此您可以查询事物是否是它们的实例。例如,您可以向 DBpedia 索取数据属性:
select ?property where
?property a owl:DatatypeProperty
limit 10
SPARQL results
【讨论】:
以上是关于在 SPARQL 中,我可以区分关系和属性键吗?的主要内容,如果未能解决你的问题,请参考以下文章