По предмету, допустимо ли утверждать один rdf:Statement
с несколькими rdf:predicate
троек, прикрепленных к нему?
Справочная информация: я пытаюсь построить предполагаемые тройки с помощью простых правил, основанных на SPARUL
(ie, 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
, но в моем случае это не имеет большого значения.