2014-01-16 3 views
1

enter image description hereВ SPARQL я могу различать отношения и ключи свойств?

В Neo4j быстрых запросов панели, есть «типы отношений» и «собственность ключи», которые имеют смысл в контексте синтаксиса запросов Neo4j высчитывать.

В SPARQL есть ли способ различать тройки, которые являются отношениями и тройками, которые являются свойствами?

Я полагаю, некоторые примеры данных может быть как следующее:

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

ответ

6

SPARQL является язык запросов нацелены на конкретную модель данных, один определенный по данным RDF. Обычно он используется для запроса либо RDF, либо OWL данных.

RDF определяет properties без distiguishing их в объектах ссылаются свойств и данных ссылающихся свойств. Вы можете различать их косвенно, проверяя их диапазон. Если их диапазон - это свойство XSD, вы можете сделать вывод, что это свойство привязки данных.

OWL фактически делает официальное различие между двумя видами свойств. Они называются, object properties и data properties. Поэтому, если вы используете OWL-datamodel, вы можете идентифицировать тип свойства непосредственно своим классом OWL. Те, которые вы называете «типами отношений», на самом деле являются «свойствами объекта», а те, которые вы называете «ключами свойств», являются «свойствами данных» в терминологии OWL. Они соответственно идентифицируются как экземпляры классов owl:ObjectProperty и owl:DatatypeProperty.

Надеюсь, я помог!

2

Pantelis Natsiavas правильно points out что в OWL вы можете отличить свойства объекта и типа данных. Вы спросили, как это сделать в SPARQL. owl:DatatypeProperty и owl:ObjectProperty - это классы RDFS, и поэтому вы можете запросить, являются ли вещи их экземплярами. Например, вы можете попросить свойств данных из DBpedia:

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

SPARQL results

3

Вы можете проверить данные с помощью теста на наличие у объекта является буквальным:

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

могли бы вы разработать немного? – Kristian

+1

@Kristian То, что вы называете ключами свойств, будет иметь литералы RDF как значения, в отличие от URI или пустых узлов. Если вы ищете '? S? P? O' и принимаете только совпадения, где'? O' является литералом, то каждый '? P' будет свойством типа данных (в OWL). На самом деле это не совсем так, поскольку свойства аннотации также могут иметь литеральные значения, но есть идея: если вы ищете свойства, которые имеют буквальные значения, то вы найдете свойства с буквальными значениями. –

 Смежные вопросы

  • Нет связанных вопросов^_^