]> Lady’s Gitweb - Vocab/blobdiff - transforms/site/infer.xslt
Update ⛩📰 书社 to 0.13.3; “simplify” build
[Vocab] / transforms / site / infer.xslt
diff --git a/transforms/site/infer.xslt b/transforms/site/infer.xslt
deleted file mode 100644 (file)
index 38ad449..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version="1.0"?>
-<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
-SPDX-License-Identifier: MPL-2.0
--->
-<!--
-© 2024 Lady [@ Ladys Computer].
-
-This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
-If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
--->
-
-<transform
-       xmlns="http://www.w3.org/1999/XSL/Transform"
-       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
-       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
-       xmlns:exsl="http://exslt.org/common"
-       xmlns:exslfunc="http://exslt.org/functions"
-       xmlns:owl="http://www.w3.org/2002/07/owl#"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
-       exclude-result-prefixes="Vocab Vocabvocab"
-       extension-element-prefixes="exsl exslfunc"
-       version="1.0"
->
-       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:infer.xslt</书社:id>
-       <key name="Vocab:equivalent-class" match="owl:Class|owl:Restriction|rdfs:Datatype" use="owl:equivalentClass/@rdf:resource"/>
-       <key name="Vocab:equivalent-property" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="owl:equivalentProperty/@rdf:resource"/>
-       <key name="Vocab:equivalent-individual" match="owl:NamedIndividual" use="owl:sameAs/@rdf:resource"/>
-       <key name="Vocab:inverse-class" match="owl:Class|rdfs:Datatype" use="owl:complementOf/@rdf:resource"/>
-       <key name="Vocab:inverse-property" match="owl:DatatypeProperty|owl:ObjectProperty" use="owl:inverseOf/@rdf:resource"/>
-       <key name="Vocab:disjoint-class" match="owl:Class|rdfs:Datatype" use="owl:disjointWith/@rdf:resource"/>
-       <key name="Vocab:disjoint-property" match="owl:DatatypeProperty|owl:ObjectProperty" use="owl:propertyDisjointWith/@rdf:resource"/>
-       <exslfunc:function name="Vocab:get-equivalents">
-               <param name="resource-nodes"/>
-               <param name="kind" select="'individual'"/>
-               <param name="include-self" select="false()"/>
-               <param name="exclude" select="/.."/>
-               <variable name="result-fragment">
-                       <call-template name="Vocab:get-fragment-of-equivalents">
-                               <with-param name="kind" select="$kind"/>
-                               <with-param name="resource-nodes" select="$resource-nodes"/>
-                               <with-param name="include-self" select="$include-self"/>
-                               <with-param name="exclude" select="$exclude"/>
-                       </call-template>
-               </variable>
-               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
-       </exslfunc:function>
-       <exslfunc:function name="Vocab:get-transitives">
-               <param name="resource-nodes"/>
-               <param name="kind" select="'individual'"/>
-               <param name="relationship"/>
-               <param name="include-self" select="false()"/>
-               <param name="exclude" select="/.."/>
-               <variable name="result-fragment">
-                       <call-template name="Vocab:get-fragment-of-transitives">
-                               <with-param name="kind" select="$kind"/>
-                               <with-param name="relationship" select="$relationship"/>
-                               <with-param name="resource-nodes" select="$resource-nodes"/>
-                               <with-param name="include-self" select="$include-self"/>
-                               <with-param name="exclude" select="$exclude"/>
-                       </call-template>
-               </variable>
-               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
-       </exslfunc:function>
-       <exslfunc:function name="Vocab:get-symmetrics">
-               <param name="resource-nodes"/>
-               <param name="kind"/>
-               <param name="relationship"/>
-               <param name="include-self" select="false()"/>
-               <param name="exclude" select="/.."/>
-               <variable name="root" select="/"/>
-               <variable name="relationship-names" select="Vocab:relationship-names($kind, $relationship)"/>
-               <variable name="result-fragment">
-                       <if test="string($relationship-names/Vocab:local-name)!=''">
-                               <variable name="relationship-key">
-                                       <text>Vocab:</text>
-                                       <value-of select="$relationship"/>
-                                       <text>-</text>
-                                       <value-of select="$kind"/>
-                               </variable>
-                               <variable name="equivalents" select="Vocab:get-equivalents($resource-nodes, $kind, true(), $exclude)"/>
-                               <variable name="unfiltered-result-fragment">
-                                       <if test="$include-self">
-                                               <copy-of select="$equivalents"/>
-                                       </if>
-                                       <for-each select="$equivalents/@rdf:about">
-                                               <variable name="source" select="string()"/>
-                                               <for-each select="$root">
-                                                       <for-each select="key(concat('Vocab:named-', $kind), $source)">
-                                                               <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
-                                                                       <with-param name="source" select="$source"/>
-                                                               </apply-templates>
-                                                       </for-each>
-                                                       <for-each select="key($relationship-key, $source)">
-                                                               <apply-templates select="." mode="Vocab:format-get">
-                                                                       <with-param name="source" select="string(@rdf:about)"/>
-                                                               </apply-templates>
-                                                       </for-each>
-                                               </for-each>
-                                       </for-each>
-                               </variable>
-                               <for-each select="exsl:node-set($unfiltered-result-fragment)/*">
-                                       <copy-of select="self::*[not(@rdf:about and ($exclude|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])]"/>
-                               </for-each>
-                       </if>
-               </variable>
-               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
-       </exslfunc:function>
-       <exslfunc:function name="Vocab:relationship-names">
-               <param name="kind"/>
-               <param name="relationship"/>
-               <variable name="result-fragment">
-                       <element name="Vocab:local-name">
-                               <choose>
-                                       <when test="$relationship='equivalent' and $kind='class'">
-                                               <text>equivalentClass</text>
-                                       </when>
-                                       <when test="$relationship='equivalent' and $kind='property'">
-                                               <text>equivalentProperty</text>
-                                       </when>
-                                       <when test="$relationship='equivalent' and $kind='individual'">
-                                               <text>sameAs</text>
-                                       </when>
-                                       <when test="$relationship='super' and $kind='class'">
-                                               <text>subClassOf</text>
-                                       </when>
-                                       <when test="$relationship='super' and $kind='property'">
-                                               <text>subPropertyOf</text>
-                                       </when>
-                                       <when test="$relationship='inverse' and $kind='class'">
-                                               <text>complementOf</text>
-                                       </when>
-                                       <when test="$relationship='inverse' and $kind='property'">
-                                               <text>inverseOf</text>
-                                       </when>
-                                       <when test="$relationship='disjoint' and $kind='class'">
-                                               <text>disjointWith</text>
-                                       </when>
-                                       <when test="$relationship='disjoint' and $kind='property'">
-                                               <text>propertyDisjointWith</text>
-                                       </when>
-                               </choose>
-                       </element>
-                       <element name="Vocab:namespace">
-                               <choose>
-                                       <when test="$relationship='super'">
-                                               <text>http://www.w3.org/2000/01/rdf-schema#</text>
-                                       </when>
-                                       <otherwise>
-                                               <text>http://www.w3.org/2002/07/owl#</text>
-                                       </otherwise>
-                               </choose>
-                       </element>
-               </variable>
-               <exslfunc:result select="exsl:node-set($result-fragment)"/>
-       </exslfunc:function>
-       <template name="Vocab:get-fragment-of-equivalents">
-               <param name="kind" select="'individual'"/>
-               <param name="resource-nodes" select="/.."/> <!-- not yet processed, but selected -->
-               <param name="include-self" select="true()"/> <!-- make false on first run to not include provided nodes -->
-               <param name="exclude" select="/.."/> <!-- leave named nodes out of result -->
-               <param name="gotten" select="/.."/> <!-- already processed -->
-               <variable name="root" select="/"/>
-               <variable name="relationship-names" select="Vocab:relationship-names($kind, 'equivalent')"/>
-               <variable name="gotten-nodes" select="exsl:node-set($gotten)/*"/>
-               <variable name="next"> <!-- new selection -->
-                       <for-each select="$resource-nodes/@rdf:about">
-                               <!-- Iterate over each named resource to get, find it, and get the equivalent resources. -->
-                               <if test="not(($gotten-nodes|../preceding-sibling::*)/@rdf:about[string()=string(current())])">
-                                       <variable name="source" select="string()"/>
-                                       <for-each select="$root">
-                                               <for-each select="key(concat('Vocab:named-', $kind), $source)">
-                                                       <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
-                                                               <with-param name="source" select="$source"/>
-                                                       </apply-templates>
-                                               </for-each>
-                                               <for-each select="key(concat('Vocab:equivalent-', $kind), $source)">
-                                                       <apply-templates select="." mode="Vocab:format-get">
-                                                               <with-param name="source" select="string(@rdf:about)"/>
-                                                       </apply-templates>
-                                               </for-each>
-                                       </for-each>
-                               </if>
-                       </for-each>
-               </variable>
-               <variable name="next-nodes" select="exsl:node-set($next)/*"/>
-               <if test="$include-self">
-                       <for-each select="$resource-nodes">
-                               <if test="not(@rdf:about and ($exclude|$gotten-nodes|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])">
-                                       <apply-templates select="." mode="Vocab:format-get"/>
-                               </if>
-                       </for-each>
-               </if>
-               <if test="$next-nodes">
-                       <call-template name="Vocab:get-fragment-of-equivalents">
-                               <with-param name="kind" select="$kind"/>
-                               <with-param name="resource-nodes" select="$next-nodes"/>
-                               <with-param name="exclude" select="$exclude"/>
-                               <with-param name="gotten">
-                                       <copy-of select="$gotten-nodes"/>
-                                       <for-each select="$resource-nodes">
-                                               <if test="not(@rdf:about and ($gotten-nodes|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])">
-                                                       <copy-of select="."/>
-                                               </if>
-                                       </for-each>
-                               </with-param>
-                       </call-template>
-               </if>
-       </template>
-       <template name="Vocab:get-fragment-of-transitives">
-               <param name="kind" select="'individual'"/>
-               <param name="relationship"/>
-               <param name="resource-nodes" select="/.."/> <!-- not yet processed, but selected -->
-               <param name="include-self" select="true()"/> <!-- make false on first run to not include provided nodes -->
-               <param name="exclude" select="/.."/> <!-- leave named nodes out of result -->
-               <param name="gotten" select="/.."/> <!-- already processed -->
-               <variable name="root" select="/"/>
-               <variable name="relationship-names" select="Vocab:relationship-names($kind, $relationship)"/>
-               <if test="string($relationship-names/Vocab:local-name)!=''">
-                       <variable name="gotten-nodes" select="exsl:node-set($gotten)/*"/>
-                       <variable name="equivalent-nodes" select="Vocab:get-equivalents($resource-nodes, $kind, true(), $gotten-nodes)"/> <!-- already deduped -->
-                       <variable name="next"> <!-- new selection -->
-                               <for-each select="$equivalent-nodes/@rdf:about">
-                                       <!-- Iterate over each named resource to get, find it, and get the related resources. -->
-                                       <variable name="source" select="string()"/>
-                                       <for-each select="$root">
-                                               <for-each select="key(concat('Vocab:named-', $kind), $source)">
-                                                       <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
-                                                               <with-param name="source" select="$source"/>
-                                                       </apply-templates>
-                                               </for-each>
-                                       </for-each>
-                               </for-each>
-                       </variable>
-                       <variable name="next-nodes" select="exsl:node-set($next)/*"/>
-                       <if test="$include-self">
-                               <for-each select="$equivalent-nodes">
-                                       <if test="not(@rdf:about and $exclude/@rdf:about[string()=string(current()/@rdf:about)])">
-                                               <copy-of select="."/>
-                                       </if>
-                               </for-each>
-                       </if>
-                       <if test="$next-nodes">
-                               <call-template name="Vocab:get-fragment-of-transitives">
-                                       <with-param name="kind" select="$kind"/>
-                                       <with-param name="relationship" select="$relationship"/>
-                                       <with-param name="resource-nodes" select="$next-nodes"/>
-                                       <with-param name="exclude" select="$exclude"/>
-                                       <with-param name="gotten">
-                                               <copy-of select="$gotten-nodes"/>
-                                               <copy-of select="$equivalent-nodes"/>
-                                       </with-param>
-                               </call-template>
-                       </if>
-               </if>
-       </template>
-       <template match="*" mode="Vocab:format-get">
-               <param name="source"/>
-               <choose>
-                       <when test="Vocabvocab:inferred-from">
-                               <copy-of select="."/>
-                       </when>
-                       <when test="@rdf:about|@rdf:resource">
-                               <element name="rdf:Description">
-                                       <attribute name="rdf:about">
-                                               <value-of select="@rdf:about|@rdf:resource"/>
-                                       </attribute>
-                                       <if test="string($source)!=''">
-                                               <element name="Vocabvocab:inferred-from">
-                                                       <attribute name="rdf:resource">
-                                                               <value-of select="$source"/>
-                                                       </attribute>
-                                               </element>
-                                       </if>
-                               </element>
-                       </when>
-                       <otherwise>
-                               <for-each select="*">
-                                       <copy>
-                                               <copy-of select="@*|node()"/>
-                                               <if test="string($source)!=''">
-                                                       <element name="Vocabvocab:inferred-from">
-                                                               <attribute name="rdf:resource">
-                                                                       <value-of select="$source"/>
-                                                               </attribute>
-                                                       </element>
-                                               </if>
-                                       </copy>
-                               </for-each>
-                       </otherwise>
-               </choose>
-       </template>
-</transform>
This page took 0.356479 seconds and 4 git commands to generate.