Нужен алгоритм для вычисления всех возможных выводов

#rdf #owl #rdfs #reasoning #rdfs

#rdf #owl #rdfs #рассуждения #rdfs

Вопрос:

Я создаю статический механизм вывода RDFS-Plus.

Я написал функцию, которая сделает соответствующие выводы для всех включенных конструкций. Например, если этой функции передается тройка C1 rdf:subClassOf C2 , то для всех X в тройках формы X rdf:type C1 будет создана новая тройка формы X rdf:type C2 .

Я изо всех сил пытаюсь выяснить, как сделать все возможные выводы. Проблема заключается в том, что я должен делать выводы на основе выводов.

Вот где я нахожусь в своей программе:

 1. Parse a `.ttl` file and assert all the triples into a data store.
2. Separate out the triples that represent RDFS-Plus constructs into a list.
3. ??? (make all possible inferences somehow)
 

Единственная идея, которая, я уверен, сработает, — это сгенерировать все перестановки списка RDFS-Plus (с указанием списка списков), а затем для каждого внутреннего списка сопоставить мою функцию вывода. Это бесполезное решение, поскольку оно настолько неэффективно.

Достаточно ли моей функции вывода, чтобы сделать все возможные выводы, или я пошел по бесплодному пути? Достаточно ли у меня места для построения графика зависимостей от правил? Я не знаю, как вычислить, может ли конструкция моделирования зависеть от другой конструкции. Например, может owl:FunctionalProperty зависеть от rdfs:subClassOf или это просто тарабарщина?

Я был бы очень признателен за некоторое понимание.

Комментарии:

1. Где лучше задать этот вопрос?

2. за этим нет никакой магии — люди уже сделали то, что вы хотите сделать, я сделал то, что вы хотите сделать — не уверен, почему вы хотите изобретать велосипед, но здесь вопрос не в этом. Очевидно, что процедура всегда одинакова. У вас есть набор правил, некоторые из которых зависят от выходных данных других правил, что позволяет создавать график зависимости от правил . Если у вас есть циклы на графике, вам, очевидно, нужно применить итерацию с фиксированной точкой, т. Е. Повторять весь цикл до тех пор, пока не будут вычислены новые выводы. Выполнено.

3. Я не понимаю, как я должен знать, какие правила зависят от чего? Можно ли это вычислить? Я смог найти некоторые сведения об этом, но ни в одном из этих показаний фактически не говорилось, как вычислить эти зависимости. Правильно ли я буду говорить, что два правила, от которых больше всего зависит, будут rdfs:subPropertyOf и rdfs:subClassOf ?

4. Любое правило имеет предпосылку и вывод или нет? Как ввод и вывод. Разве это не очевидно? Некоторые правила используют выходные данные других правил, это все, что вам нужно. Должно быть очевидно, что тройки с rdf:type предикатом as могут исходить из исходного графика, но также и из других правил, «производящих» эти тройки.

5. Я не понимаю, что вы имеете в виду в последней части вашего комментария, учитывая, что вы не показали никакого правила, а только два свойства. Но это не имеет значения. Думаю, я прояснил это своим предыдущим комментарием. Вычислите граф зависимостей, затем исследуйте его и посмотрите, какие правила могут быть вычислены независимо, а какие требуют ввода из других правил и какая часть набора правил должна повторяться до тех пор, пока не появятся новые тройки.