Согласно предмету, допустимо ли утверждать один rdf:Statement
с несколькими прикрепленными к нему тройками rdf:predicate
?
Предыстория: я пытаюсь построить предполагаемые тройки с помощью простых правил, основанных на SPARUL
(т.е. INSERT <inferred triples> WHERE <preconditions>
). В моем наборе данных я овеществил утверждения, основанные на словаре rdf:
, и имеет смысл делать такие выводы:
?stmt rdf:predicate ?p; ?p rdfs:subPropertyOf ?p1 =>
=> a statement with rdf:predicate ?p1 is also asserted.
Целью такого вывода является, главным образом, картирование словаря: люди, выполняющие поиск с помощью словаря, определяющего ?p1
, также найдут утверждения, сформулированные людьми, использующими словарь, в котором определено ?p
(например, skos:prefLabel(?p) rdfs:subPropertyOf schema:name(?p1)
).
Я не могу найти никакой документации, в которой говорится, что оператор может иметь только один rdf:predicate
или наоборот. Мне кажется, что более чистым вариантом был бы только один предикат, однако, если бы это было так, мне нужно было бы продублировать почти все существующие утверждения (включая дополнительные триплеты, такие как происхождение или оценка значимости) и использовать ?p1
в качестве предиката для новый.
Если вместо этого я просто добавлю rdf:predicate
к существующему, подразумеваемая семантика будет такой: «есть два, которые отличаются только предикатом», и все запросы, ищущие ?p
или ?p1
, должны работать без проблем, но я не уверен, что ничего не пропускаю.
На самом деле, я вижу одну вещь: подсчет овеществленных операторов не может быть основан на подсчете троек, таких как ?s a rdf:Statement
, но в моем случае это не имеет большого значения.