iv_an_ru (iv_an_ru) wrote,
iv_an_ru
iv_an_ru

Category:
Сегодня ночью я процедурой на Virtuoso/PL скомпилировал SHACL-для-SHACL-а в процедуру на Virtuoso/PL, которой проверил, что SHACL-для-SHACL-а действительно в SHACLе SHACL-для-SHACL-а.

RDF ведь очень бесформенный формат, в него можно что угодно запихать, вопрос только, что с этим "чем угодно" сможет делать читатель. Чтобы иметь возможность описать желаемую форму RDF-ных графов и описывать условия логической непротиворечивости этих графов, был разработан Shapes Constraint Language (SHACL). В документе на этом языке можно указать, например, что если у человека известна группа крови, то она у него только одна и может иметь только одно из значений некоторого списка, а если известны и дата рождения, и дата смерти, то первая меньше или равна второй. Если RDF-документ Y соответствует всем условиям, описанным в SHACL-документе X, то мы говорим, что у нас "Y в SHACLe X". Чтобы не проверять соответствие ручками, я пишу на Virtuoso/PL проверялку, которая на вход получает X и Y, и либо рапортует, что всё хорошо, либо выдаёт список "нарушений".

Это была присказка. Теперь учтём, что SHACL --- разновидность RDF. Значит, можно написать SHACL-для-SHACL-а, чтобы им проверять правильность SHACL-документов перед тем, как пробовать проверять ими RDF-документы. А в качестве "утренней зарядки" можно убедиться, что SHACL-для-SHACL-а действительно в SHACLе SHACL-для-SHACL-а.

Дальше веселее. Вот эта наша проверялка --- она откровенно неторопливая. Она вынуждена одним глазом косить в SHACL, а другим в проверяемый документ, и много-много раз перечитывать SHACL в процессе работы, выкусывая подробности нужных правил. Ну так можно же и побыстрее сделать, и я жизнерадостно пишу на Virtuoso/PL процедуру, которая скомпилирует данный ей SHACL X в такую программу на Virtuoso/PL, что если этой программе на вход подать RDF-документ Y, то он будет проверен на соответствие X. Получается в среднем в 30 раз быстрее.

Теперь вам не составит труда расшифровать скороговорку в первом абзаце.
Tags: rdbms
Subscribe

  • Никиту Михалкова --- под суд!

    "Режиссер и телеведущий Никита Михалков предложил лишать российского гражданства за призывы вводить санкции против страны." Ссылку даже давать не…

  • Сынарник

    " Зайти в комнату подростка --- это как заскочить в Икею. Собственно, ты хотел только посмотреть, но выходишь с шестью стаканами, двумя тарелками,…

  • Второго нашествия аганбегянов страна может и не пережить

    " Академики РАН Абел Аганбегян и Борис Порфирьев, а также член-корреспондент РАН Александр Широв подготовили доклад «О преодолении текущего кризиса…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments