-Subproject commit 884130a52be6bfe21e524498385cb6486495b383
+Subproject commit 5c2f4a2d2c9913196c6092f0f72a8c4ff6e76752
<?xml encoding="UTF-8"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: CC0-1.0
-->
-# SPDX-FileCopyrightText: 2023-2024 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-FileCopyrightText: 2023, 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
# SPDX-License-Identifier: MPL-2.0
SHELL = /bin/sh
-# Copyright © 2023–2024 Lady [@ Ladys Computer].
+# Copyright © 2023–2025 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/>.
TOUCH := touch
XARGS := xargs
-DATASRCDIR := data
-SITESRCDIR := site
+DATADIR := data
+SRCDIR := site
BUILDDIR := build
-DATABUILDDIR := build/data
-RDFBUILDDIR := build/rdf
-SITEBUILDDIR := build/site
BUILDTARGET := .grass
DESTDIR := public
SHUSHE := .⛩📰
MAKEOPTS := CP='$(CP)' FIND='$(FIND)' GIT='$(GIT)' MKDIR='$(MKDIR)' PRINTF='$(PRINTF)' RM='$(RM)' SED='$(SED)' TEST='$(TEST)' TOUCH='$(TOUCH)' XARGS='$(XARGS)'
-
-# Stage 1: Build R·D·F files to build/rdf
-SHUSHEDATAOPTS := $(MAKEOPTS) SRCDIR='$(DATASRCDIR)' INCLUDEDIR='$(DATASRCDIR)' BUILDDIR='$(DATABUILDDIR)' DESTDIR='$(RDFBUILDDIR)' EXTRAPARSERS='$(wildcard $(THISDIR)/parsers/data/*.xslt)' EXTRAPARSERLIBS='$(DATASRCDIR)/ontologies/¦' EXTRAFINDINCLUDERULES='-not '"'"'('"'"' '"'"'('"'"' -name ontologies -o -name profiles '"'"')'"'"' -a -type d -a -prune '"'"')'"'"'' EXTRATRANSFORMS='$(wildcard $(THISDIR)/transforms/data/*.xslt)'
-
-# Stage 2: Build the actual site
-SHUSHESITEOPTS := $(MAKEOPTS) SRCDIR='$(SITESRCDIR)' INCLUDEDIR='$(RDFBUILDDIR)' BUILDDIR='$(SITEBUILDDIR)' DESTDIR='$(DESTDIR)' EXTRAPARSERS='$(wildcard $(THISDIR)/parsers/site/*.xslt)' EXTRATRANSFORMS='$(wildcard $(THISDIR)/transforms/site/*.xslt)'
+SHUSHEOPTS := $(MAKEOPTS) SRCDIR='$(SRCDIR)' DATADIR='$(DATADIR)' BUILDDIR='$(BUILDDIR)' DESTDIR='$(BUILDDIR)/public' EXTRAPARSERS='$(wildcard $(THISDIR)/parsers/*.xslt)' EXTRAPARSERLIBS='$(DATADIR)/ontologies/¦' EXTRATRANSFORMS='$(wildcard $(THISDIR)/transforms/*.xslt)'
YSEME := .👥📤
-YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='.grass' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
+YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='$(BUILDTARGET)' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
-xmls := $(wildcard $(DATASRCDIR)/*/*)
+xmls := $(wildcard $(DATADIR)/*/*)
# ━ § Call out to ⛩📰 书社 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
install : $(SHUSHE)/GNUmakefile build
- @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
- @for target in $$($(MAKE) -s -f '$<' listout QUIET=1 $(SHUSHEDATAOPTS)); do $(PRINTF) '%s\n' "$$target" | $(SED) 's/¦/:/g' | $(XARGS) $(PRINTF) 'Copying </%s>…\n' >&2; $(PRINTF) '%s\n' "$$target" | $(SED) 's:^:$(DESTDIR)/:;s/¦/:/g' | $(XARGS) $(CP) '$(RDFBUILDDIR)/'"$$target"; done
- @for target in $$($(MAKE) -s -f '$<' listout QUIET=1 $(SHUSHESITEOPTS)); do for dir in $$($(FIND) "$(SITEBUILDDIR)/public/$$target" -not -name '.*' -and -type d); do if $(TEST) '!' -d "$(DESTDIR)/$$dir"; then $(PRINTF) '%s\n' "$$dir" | $(SED) 's:$(SITEBUILDDIR)/public/:$(DESTDIR)/:' | $(XARGS) $(MKDIR) -p; fi; done; for file in $$($(FIND) "$(SITEBUILDDIR)/public/$$target" -not '(' -name '.*' -or -type d ')'); do $(PRINTF) '%s\n' "$$file" | $(SED) 's:$(SITEBUILDDIR)/public/:/:;s:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(PRINTF) 'Copying <%s>…\n' >&2; $(PRINTF) '%s\n' "$$file" | $(SED) 's:$(SITEBUILDDIR)/public/:$(DESTDIR)/:;s:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(CP) "$$file"; done; done
+ @for publicfile in $(patsubst %,"%",$(shell $(FIND) '$(DESTDIR)'/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -R -f "$$publicfile"; fi; done
+ @for dir in $$($(FIND) '$(BUILDDIR)/public' -type d | $(SED) 's:$(BUILDDIR)/public/::'); do if $(TEST) '!' -d "$(DESTDIR)/$$dir"; then $(MKDIR) -p "$(DESTDIR)/$$dir"; fi; done
+ @for file in $$($(FIND) '$(BUILDDIR)/public' -type f | $(SED) 's:$(BUILDDIR)/public/::'); do $(PRINTF) '%s\n' "$$file" | $(SED) 's:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(PRINTF) 'Copying <%s>…\n' >&2; $(PRINTF) '%s\n' "$$file" | $(SED) 's:^:$(DESTDIR)/:;s:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(CP) "$(BUILDDIR)/public/$$file"; done
$(TOUCH) '$(BUILDTARGET)'
build : $(SHUSHE)/GNUmakefile
- @$(RM) -rf '$(RDFBUILDDIR)/profiles'
- @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
- @$(MAKE) -f '$<' $(SHUSHESITEOPTS)
-
-clean : $(SHUSHE)/GNUmakefile
- @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
- @$(RM) -rf '$(RDFBUILDDIR)'
- @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
-
-list listout : $(SHUSHE)/GNUmakefile
- @$(RM) -rf '$(RDFBUILDDIR)/profiles'
- @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
- @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
-
-$(BUILDDIR)/data/% : $(SHUSHE)/GNUmakefile FORCE
- @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
-
-$(BUILDDIR)/rdf/% : $(SHUSHE)/GNUmakefile FORCE
- @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
-
-$(BUILDDIR)/site/% : $(SHUSHE)/GNUmakefile FORCE
- @$(RM) -rf '$(RDFBUILDDIR)/profiles'
- @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
- @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
-
-$(DESTDIR)/% : $(SHUSHE)/GNUmakefile FORCE
- @$(RM) -rf '$(RDFBUILDDIR)/profiles'
- @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
- @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
+ @$(RM) -R -f '$(BUILDDIR)/public'
+ @$(MAKE) -f '$<' install $(SHUSHEOPTS)
+
+clean list listout : $(SHUSHE)/GNUmakefile
+ @$(MAKE) -f '$<' $@ $(SHUSHEOPTS)
+
+$(BUILDDIR)/% : $(SHUSHE)/GNUmakefile FORCE
+ @$(MAKE) -f '$<' $@ $(SHUSHEOPTS)
# ━ § Call out to 👥📤 Yseme ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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/>.
exclude-result-prefixes="Vocab"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:parsers:data:ontology.xslt</书社:id>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:parsers:ontology.xslt</书社:id>
<template name="Vocab:local-name">
<choose>
<when test="substring-after($IDENTIFIER, '/')=''"/>
</template>
<template name="Vocab:prefix">
<param name="unprefixed" select="''"/>
- <variable name="namespace" select="document('../../data/ontologies/%C2%A6')/Ontology/declare/namespace[starts-with($unprefixed, string())][1]"/>
+ <variable name="namespace" select="document('../data/ontologies/%C2%A6')/Ontology/declare/namespace[starts-with($unprefixed, string())][1]"/>
<choose>
<when test="not($namespace)">
<value-of select="$unprefixed"/>
<variable name="prefix" select="substring-before($prefixed, ':')"/>
<choose>
<when test="not(contains($prefixed, ':'))">
- <value-of select="document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()='']/following-sibling::namespace"/>
+ <value-of select="document('../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()='']/following-sibling::namespace"/>
<value-of select="$prefixed"/>
</when>
- <when test="not(document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix])">
+ <when test="not(document('../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix])">
<value-of select="$prefixed"/>
</when>
<otherwise>
- <value-of select="document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix]/following-sibling::namespace"/>
+ <value-of select="document('../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix]/following-sibling::namespace"/>
<value-of select="substring-after($prefixed, ':')"/>
</otherwise>
</choose>
<variable name="local-name">
<call-template name="Vocab:local-name"/>
</variable>
- <element name="rdf:RDF">
- <attribute name="书社:destination">
- <choose>
- <when test="$local-name=''">
- <text>ontology</text>
- </when>
- <otherwise>
- <value-of select="translate($local-name, ':', '¦')"/>
- </otherwise>
- </choose>
- <text>.rdf</text>
- </attribute>
- <attribute name="xml:base">
- <call-template name="Vocab:unprefix"/>
- </attribute>
- <!--
- The ontology element is “manually” created by the parser in order to provide dynamic control over its name·spaces, as X·S·L·T provides no mechanism for creating name·space nodes.
+ <!--
+ The ontology element is “manually” created by the parser in order to provide dynamic control over its name·spaces, as X·S·L·T provides no mechanism for creating name·space nodes.
- (Technically, name·space nodes can be created with the `@namespace´ property on `<xslt:element>´, but the resulting prefix is, ⅌ the specification text, implementation‐specific.)
- -->
- <text disable-output-escaping="yes"><owl:Ontology</text>
- <for-each select="declare">
- <text disable-output-escaping="yes"> xmlns</text>
- <if test="string(prefix)!=''">
- <text disable-output-escaping="yes">:</text>
- </if>
- <value-of select="prefix"/>
- <text disable-output-escaping="yes">="</text>
- <value-of select="namespace"/>
- <text disable-output-escaping="yes">"</text>
- </for-each>
- <text disable-output-escaping="yes"> rdf:about="</text>
- <call-template name="Vocab:unprefix">
- <with-param name="prefixed" select="$local-name"/>
- </call-template>
- <text disable-output-escaping="yes">"></text>
- &continue;
- <text disable-output-escaping="yes"></owl:Ontology></text>
- <书社:link xlink:href="about:shushe?include=classes/" xlink:show="embed"/>
- <书社:link xlink:href="about:shushe?include=datatypes/" xlink:show="embed"/>
- <书社:link xlink:href="about:shushe?include=annotation_properties/" xlink:show="embed"/>
- <书社:link xlink:href="about:shushe?include=object_properties/" xlink:show="embed"/>
- <书社:link xlink:href="about:shushe?include=datatype_properties/" xlink:show="embed"/>
- <书社:link xlink:href="about:shushe?include=named_individuals/" xlink:show="embed"/>
- </element>
+ (Technically, name·space nodes can be created with the `@namespace´ property on `<xslt:element>´, but the resulting prefix is, ⅌ the specification text, implementation‐specific.)
+ -->
+ <text disable-output-escaping="yes"><owl:Ontology</text>
+ <for-each select="declare">
+ <text disable-output-escaping="yes"> xmlns</text>
+ <if test="string(prefix)!=''">
+ <text disable-output-escaping="yes">:</text>
+ </if>
+ <value-of select="prefix"/>
+ <text disable-output-escaping="yes">="</text>
+ <value-of select="namespace"/>
+ <text disable-output-escaping="yes">"</text>
+ </for-each>
+ <text disable-output-escaping="yes"> rdf:about="</text>
+ <call-template name="Vocab:unprefix">
+ <with-param name="prefixed" select="$local-name"/>
+ </call-template>
+ <text disable-output-escaping="yes">"></text>
+ &continue;
+ <text disable-output-escaping="yes"></owl:Ontology></text>
</template>
<template match="SpecificResource" priority="2">
<choose>
</choose>
</template>
<template match="DatatypeProperty/@functional|ObjectProperty/@functional|ObjectProperty/@inverseFunctional|ObjectProperty/@reflexive|ObjectProperty/@irreflexive|ObjectProperty/@symmetric|ObjectProperty/@asymmetric|ObjectProperty/@transitive" priority="2"/>
- <template match="@*[namespace-uri()='']" priority="1">
+ <template match="*[namespace-uri()='']/@*[namespace-uri()='']" priority="1">
<message terminate="yes">
<text>Error: Unrecognized attribute in null namespace: @</text>
<value-of select="local-name()"/>
</if>
</element>
</template>
- <template match="text()[ancestor::cell or ancestor::p]" priority="1">
+ <template match="*[namespace-uri()='']/text()[ancestor::cell or ancestor::p]" priority="1">
<variable name="normalized" select="normalize-space()"/>
- <if test="$normalized!=''">
- <if test="preceding-sibling::* and normalize-space(substring(., 1, 1))=''">
- <text> </text>
- </if>
- <value-of select="$normalized"/>
- <if test="following-sibling::* and normalize-space(substring(., string-length(), 1))=''">
+ <choose>
+ <when test="$normalized!=''">
+ <if test="preceding-sibling::* and normalize-space(substring(., 1, 1))=''">
+ <text> </text>
+ </if>
+ <value-of select="$normalized"/>
+ <if test="following-sibling::* and normalize-space(substring(., string-length(), 1))=''">
+ <text> </text>
+ </if>
+ </when>
+ <when test="preceding-sibling::node()[position()=1 and self::*] and following-sibling::node()[position()=1 and self::*]">
<text> </text>
- </if>
- </if>
+ </when>
+ </choose>
</template>
- <template match="text()[not(ancestor::cell or ancestor::p) and normalize-space()='']" priority="1"/>
+ <template match="*[namespace-uri()='']/text()[not(ancestor::cell or ancestor::p) and normalize-space()='']" priority="1"/>
</transform>
--- /dev/null
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<rdf:RDF
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+>
+ <书社:link xlink:href="about:shushe?include=ontologies/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=classes/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=datatypes/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=annotation_properties/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=object_properties/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=datatype_properties/" xlink:show="embed"/>
+ <书社:link xlink:href="about:shushe?include=named_individuals/" xlink:show="embed"/>
+</rdf:RDF>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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/>.
version="1.0"
>
<书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:cleanup.xslt</书社:id>
- <template match="/rdf:RDF" mode="书社:apply">
+ <template match="/rdf:RDF" mode="书社:finalize">
<variable name="fragment">
<书社:raw-text>
<text><?xml version="1.0"?></text>
<for-each select="owl:Ontology/namespace::*">
<copy/>
</for-each>
- <apply-templates mode="书社:apply"/>
+ <apply-templates mode="书社:finalize"/>
</element>
</element>
</书社:raw-text>
</variable>
- <apply-templates select="exsl:node-set($fragment)" mode="书社:apply"/>
+ <apply-templates select="exsl:node-set($fragment)" mode="书社:finalize"/>
</template>
- <template match="/rdf:RDF//@xlink:*|/rdf:RDF//@书社:*|/rdf:RDF//书社:*|/rdf:RDF//text()[not(ancestor::html:*/ancestor::rdf:RDF) and normalize-space()='']|/rdf:RDF//comment()" mode="书社:apply" priority="10"/>
- <template match="/rdf:RDF//text()[not(ancestor::html:*/ancestor::rdf:RDF) and normalize-space()!='']" mode="书社:apply" priority="10">
+ <template match="/rdf:RDF//@xlink:*|/rdf:RDF//@书社:*|/rdf:RDF//书社:*|/rdf:RDF//text()[not(ancestor::html:*) and normalize-space()='']|/rdf:RDF//comment()" mode="书社:finalize" priority="10"/>
+ <template match="/rdf:RDF//text()[not(ancestor::html:*) and normalize-space()!='']" mode="书社:finalize" priority="10">
<value-of select="normalize-space()"/>
</template>
</transform>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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"
extension-element-prefixes="exsl exslfunc"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:infer.xslt</书社:id>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms: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"/>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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/>.
xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:metadata.xslt</书社:id>
- <template match="书社:id[string()='urn:fdc:vocab.ladys.computer:20240731:transforms:site:metadata.xslt']" mode="书社:metadata">
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:metadata.xslt</书社:id>
+ <template match="书社:id[string()='urn:fdc:vocab.ladys.computer:20240731:transforms:metadata.xslt']" mode="书社:metadata">
<element name="html:meta">
<attribute name="name">
<text>viewport</text>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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/>.
exclude-result-prefixes="Vocab Vocabvocab"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:data:rdf.xslt</书社:id>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:rdf.xslt</书社:id>
<key name="Vocab:name" match="owl:AnnotationProperty|owl:Class|owl:DatatypeProperty|owl:NamedIndividual|owl:ObjectProperty|rdfs:Datatype" use="@rdf:about|owl:sameAs/@rdf:resource"/>
- <template name="Vocab:base">
- <value-of select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[preceding-sibling::shacl:prefix='']"/>
- </template>
- <template name="Vocab:prefix">
- <param name="unprefixed" select="''"/>
- <variable name="namespace" select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[starts-with($unprefixed, string()) and string(preceding-sibling::shacl:prefix)!=''][1]"/>
- <choose>
- <when test="not($namespace)">
- <value-of select="$unprefixed"/>
- </when>
- <otherwise>
- <value-of select="$namespace/preceding-sibling::shacl:prefix"/>
- <text>:</text>
- <value-of select="substring-after($unprefixed, $namespace)"/>
- </otherwise>
- </choose>
+ <template match="/rdf:RDF" priority="2">
+ <copy>
+ <attribute name="xml:base">
+ <call-template name="Vocab:base"/>
+ </attribute>
+ <apply-templates select="@*[not(local-name()='base' and namespace-uri()='http://www.w3.org/XML/1998/namespace')]|node()"/>
+ </copy>
</template>
- <template match="rdf:RDF/*[@rdf:about and Vocabvocab:superClassOf]" priority="2">
+ <template match="/rdf:RDF/*[@rdf:about and Vocabvocab:superClassOf]" priority="2">
<copy>
<apply-templates select="@*|node()[not(self::Vocabvocab:superClassOf)]"/>
</copy>
</copy>
</for-each>
</template>
- <template match="@rdf:resource" priority="2">
+ <template match="/rdf:RDF//@rdf:resource" priority="2">
<variable name="base-iri">
<call-template name="Vocab:base"/>
</variable>
</choose>
</attribute>
</template>
- <template match="html:a" priority="1">
+ <template match="/rdf:RDF//html:a" priority="1">
<variable name="base-prefix">
<call-template name="Vocab:prefix">
<with-param name="unprefixed">
</choose>
</copy>
</template>
- <template match="html:a/@href[starts-with(., '#footnote-')]">
+ <template match="/rdf:RDF//html:a/@href[starts-with(., '#footnote-')]">
<attribute name="href">
<text>#footnote-</text>
<value-of select="generate-id(ancestor::rdfs:comment//@id[string()=substring-after(current(), '#')])"/>
</attribute>
</template>
- <template match="html:*/@id[starts-with(., 'footnote-')]" priority="1">
+ <template match="/rdf:RDF//html:*/@id[starts-with(., 'footnote-')]" priority="1">
<attribute name="id">
<text>footnote-</text>
<value-of select="generate-id()"/>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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/>.
exclude-result-prefixes="Vocab Vocabvocab"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:render.xslt</书社:id>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:render.xslt</书社:id>
<template name="Vocab:more-info">
<element name="html:span">
&en;
--- /dev/null
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024–2025 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:owl="http://www.w3.org/2002/07/owl#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:shacl="http://www.w3.org/ns/shacl#"
+ xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+ exclude-result-prefixes="Vocab"
+ version="1.0"
+>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:shared.xslt</书社:id>
+ <template name="Vocab:base">
+ <value-of select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[preceding-sibling::shacl:prefix='']"/>
+ </template>
+ <template name="Vocab:prefix">
+ <param name="unprefixed" select="''"/>
+ <variable name="namespace" select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[starts-with($unprefixed, string()) and string(preceding-sibling::shacl:prefix)!=''][1]"/>
+ <choose>
+ <when test="not($namespace)">
+ <value-of select="$unprefixed"/>
+ </when>
+ <otherwise>
+ <value-of select="$namespace/preceding-sibling::shacl:prefix"/>
+ <text>:</text>
+ <value-of select="substring-after($unprefixed, $namespace)"/>
+ </otherwise>
+ </choose>
+ </template>
+</transform>
<?xml version="1.0"?>
<!--
-SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: MPL-2.0
-->
<!--
-© 2024 Lady [@ Ladys Computer].
+© 2024–2025 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:anno="http://www.w3.org/ns/oa#"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:vocabstatus="http://www.w3.org/2003/06/sw-vocab-status/ns#"
xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
- exclude-result-prefixes="Vocab Vocabvocab"
+ exclude-result-prefixes="Vocab"
version="1.0"
>
- <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:terms.xslt</书社:id>
+ <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:terms.xslt</书社:id>
<key name="Vocab:named-class" match="owl:Class|rdfs:Datatype" use="@rdf:about"/>
<key name="Vocab:named-property" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="@rdf:about"/>
<key name="Vocab:named-individual" match="owl:NamedIndividual" use="@rdf:about|owl:sameAs/@rdf:resource"/>
<key name="Vocab:subclass" match="owl:Class|owl:Restriction" use="rdfs:subClassOf/@rdf:resource"/>
<key name="Vocab:subproperty" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="rdfs:subPropertyOf/@rdf:resource"/>
- <template name="Vocab:base">
- <value-of select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[preceding-sibling::shacl:prefix='']"/>
- </template>
<template name="Vocab:link-to">
<param name="resource"/>
<param name="kind" select="'individual'"/>
</element>
</if>
</template>
- <template name="Vocab:prefix">
- <param name="unprefixed" select="''"/>
- <variable name="namespace" select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[starts-with($unprefixed, string()) and string(preceding-sibling::shacl:prefix)!=''][1]"/>
- <choose>
- <when test="not($namespace)">
- <value-of select="$unprefixed"/>
- </when>
- <otherwise>
- <value-of select="$namespace/preceding-sibling::shacl:prefix"/>
- <text>:</text>
- <value-of select="substring-after($unprefixed, $namespace)"/>
- </otherwise>
- </choose>
- </template>
<template match="/书社:archive">
<variable name="base-iri">
<call-template name="Vocab:base"/>