1

在此处输入图像描述

在 Neo4j 快速查询窗格中,有“关系类型”和“属性键”,它们在 Neo4j密码查询语法的上下文中是有意义的。

在 SPARQL 中,有没有办法区分作为关系的三元组和作为属性的三元组?

我想一些示例数据可能如下所示:

<actor12> <http://some.ontology.com/#ActedIn> <movie45>           #relationship
<movie45> <http://some.ontology.com/#title> “Gone with the Wind"  #property key/val
4

3 回答 3

6

SPARQL一种针对特定数据模型的查询语言,该模型由 RDF 数据定义。通常,它用于查询RDFOWL数据。

RDF定义属性而不区分对象引用属性和数据引用属性。您可以通过检查它们的范围来间接区分它们。如果它们的范围是XSD属性,那么您可以推断它是数据引用属性。

OWL实际上对这两种属性进行了形式上的区分。这些被称为对象属性数据属性。因此,如果您使用 OWL 数据模型,您可以直接通过其 OWL 类来识别属性的类型。您称为“关系类型”的那些实际上是“对象属性”,而您称为“属性键”的那些是 OWL 术语中的“数据属性”。它们分别被标识为owl:ObjectPropertyowl:DatatypeProperty类的实例。

希望我有所帮助!

于 2014-01-16T20:10:06.443 回答
3

您可以通过测试对象是否为文字来检查数据:

   ?s ?p ?o 
   FILTER (isLiteral(?o) )
于 2014-01-16T22:10:39.157 回答
2

Pantelis Natsiavas 正确地指出,在 OWL 中您可以区分对象和数据类型属性。您询问了如何在 SPARQL 中执行此操作。 owl:DatatypeProperty并且owl:ObjectProperty是 RDFS 类,因此您可以查询事物是否是它们的实例。例如,您可以从 DBpedia 请求数据属性:

select ?property where { 
 ?property a owl:DatatypeProperty
}
limit 10 

SPARQL 结果

于 2014-01-16T21:41:25.883 回答