在SPARQL中,我可以区分关系和属性键吗?

时间:2014-01-16 19:24:54

标签: rdf sparql semantics rdfs triples

enter image description here

在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

3 个答案:

答案 0 :(得分:6)

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

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

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

希望我帮忙!

答案 1 :(得分:3)

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

   ?s ?p ?o 
   FILTER (isLiteral(?o) )

答案 2 :(得分:2)

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

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

SPARQL results