]> Lady’s Gitweb - Vocab/commitdiff
Update O·L·O modelling live
authorLady <redacted>
Sat, 13 Sep 2025 17:09:50 +0000 (13:09 -0400)
committerLady <redacted>
Sat, 13 Sep 2025 17:09:50 +0000 (13:09 -0400)
This commit introduces new `OrderedAggregation` and `Slot` terms in the
`ladys:` name·space upon which O·L·O is built. The `ladys:` versions of
these classes differ in that they do not require an `olo:length`.

99 files changed:
.gitignore
.rsync-filter [new file with mode: 0644]
\9b©ð\9f\93°
DTD
GNUmakefile
data/annotation_properties/ore¦similarTo [new file with mode: 0644]
data/classes/anno¦Selector
data/classes/awol¦FeedOrEntry
data/classes/dcterms¦LicenseDocument
data/classes/dcterms¦LocationPeriodOrJurisdiction
data/classes/dcterms¦MediaType
data/classes/dcterms¦MediaTypeOrExtent
data/classes/foaf¦Agent
data/classes/foaf¦Document
data/classes/olo¦OrderedList [new file with mode: 0644]
data/classes/olo¦Slot [new file with mode: 0644]
data/classes/ore¦AggregatedResource [new file with mode: 0644]
data/classes/ore¦Aggregation [new file with mode: 0644]
data/classes/ore¦Proxy [new file with mode: 0644]
data/classes/owl¦Nothing [new file with mode: 0644]
data/classes/owl¦Thing [new file with mode: 0644]
data/classes/pcdmuse¦ExtractedText [new file with mode: 0644]
data/classes/pcdmuse¦IntermediateFile [new file with mode: 0644]
data/classes/pcdmuse¦OriginalFile [new file with mode: 0644]
data/classes/pcdmuse¦PreservationFile [new file with mode: 0644]
data/classes/pcdmuse¦ServiceFile [new file with mode: 0644]
data/classes/pcdmuse¦ThumbnailImage [new file with mode: 0644]
data/classes/pcdmuse¦Transcript [new file with mode: 0644]
data/classes/pcdmworks¦FileSet [new file with mode: 0644]
data/classes/pcdmworks¦Work [new file with mode: 0644]
data/classes/pcdm¦Collection [new file with mode: 0644]
data/classes/pcdm¦File [new file with mode: 0644]
data/classes/pcdm¦Object [new file with mode: 0644]
data/classes/skosxl¦Label
data/classes/skos¦Collection
data/classes/¦OrderedAggregation [new file with mode: 0644]
data/classes/¦Proxy [new file with mode: 0644]
data/classes/¦Slot [new file with mode: 0644]
data/classes/¦UnicodeScalarValue [new file with mode: 0644]
data/classes/¦UnicodeString [new file with mode: 0644]
data/datatype_properties/olo¦index [new file with mode: 0644]
data/datatype_properties/olo¦length [new file with mode: 0644]
data/datatype_properties/skosxl¦literalForm
data/datatype_properties/¦n [new file with mode: 0644]
data/datatype_properties/¦ncName [new file with mode: 0644]
data/named_individuals/_FOAF_
data/named_individuals/_IIIF_ [new file with mode: 0644]
data/named_individuals/_OAI-ORE_ [new file with mode: 0644]
data/named_individuals/_OLO_ [new file with mode: 0644]
data/named_individuals/_PCDM_ [new file with mode: 0644]
data/named_individuals/_RFC5005_ [new file with mode: 0644]
data/named_individuals/rel¦current [new file with mode: 0644]
data/named_individuals/rel¦first [new file with mode: 0644]
data/named_individuals/rel¦last [new file with mode: 0644]
data/named_individuals/rel¦next [new file with mode: 0644]
data/named_individuals/rel¦next-archive [new file with mode: 0644]
data/named_individuals/rel¦prev-archive [new file with mode: 0644]
data/named_individuals/rel¦previous [new file with mode: 0644]
data/named_individuals/¦AnyWhichWay [new file with mode: 0644]
data/named_individuals/¦Everything [new file with mode: 0644]
data/object_properties/awol¦email
data/object_properties/dcterms¦coverage
data/object_properties/dcterms¦format
data/object_properties/olo¦item [new file with mode: 0644]
data/object_properties/olo¦next [new file with mode: 0644]
data/object_properties/olo¦ordered_list [new file with mode: 0644]
data/object_properties/olo¦previous [new file with mode: 0644]
data/object_properties/olo¦slot [new file with mode: 0644]
data/object_properties/ore¦aggregates [new file with mode: 0644]
data/object_properties/ore¦isAggregatedBy [new file with mode: 0644]
data/object_properties/ore¦lineage [new file with mode: 0644]
data/object_properties/ore¦proxyFor [new file with mode: 0644]
data/object_properties/ore¦proxyIn [new file with mode: 0644]
data/object_properties/pcdm¦hasFile [new file with mode: 0644]
data/object_properties/pcdm¦hasMember [new file with mode: 0644]
data/object_properties/pcdm¦hasRelatedObject [new file with mode: 0644]
data/object_properties/pcdm¦isFileOf [new file with mode: 0644]
data/object_properties/pcdm¦isMemberOf [new file with mode: 0644]
data/object_properties/pcdm¦isRelatedObjectOf [new file with mode: 0644]
data/object_properties/rel¦current [new file with mode: 0644]
data/object_properties/rel¦first [new file with mode: 0644]
data/object_properties/rel¦last [new file with mode: 0644]
data/object_properties/rel¦next [new file with mode: 0644]
data/object_properties/rel¦next-archive [new file with mode: 0644]
data/object_properties/rel¦prev-archive [new file with mode: 0644]
data/object_properties/rel¦previous [new file with mode: 0644]
data/object_properties/sioc¦email
data/object_properties/skos¦related
data/object_properties/skos¦semanticRelation
data/object_properties/¦hasSlot [new file with mode: 0644]
data/object_properties/¦in [new file with mode: 0644]
data/object_properties/¦inSlot [new file with mode: 0644]
data/ontologies/¦
parsers/ontology.xslt
scripts/serve.rb [new file with mode: 0755]
transforms/cleanup.xslt
transforms/infer.xslt
transforms/render.xslt
transforms/terms.xslt

index e75c3580593953259406d4ad746ab4d6b00b67a5..f34112df8ddf15db2fc450a558e89acf041ee8ea 100644 (file)
@@ -4,3 +4,4 @@
 /build
 /public
 .grass
 /build
 /public
 .grass
+%*
diff --git a/.rsync-filter b/.rsync-filter
new file mode 100644 (file)
index 0000000..1e1c191
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: CC0-1.0
+
+-s .DS_Store
+-s #*
+-s %*
index 5c2f4a2d2c9913196c6092f0f72a8c4ff6e76752..ca7be60f15de191e25f8cc1890e13dc499576ec4 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 5c2f4a2d2c9913196c6092f0f72a8c4ff6e76752
+Subproject commit ca7be60f15de191e25f8cc1890e13dc499576ec4
diff --git a/DTD b/DTD
index 5e9b6fd43d9229d345129f27e0b58b512440eb6f..d8d44b34d7d728b6a10ac0e69690ef6acd5bfb4d 100644 (file)
--- a/DTD
+++ b/DTD
@@ -11,6 +11,7 @@ SPDX-License-Identifier: CC0-1.0
 <!ELEMENT code (#PCDATA)>
 <!ELEMENT em (#PCDATA)>
 <!ELEMENT strong (#PCDATA)>
 <!ELEMENT code (#PCDATA)>
 <!ELEMENT em (#PCDATA)>
 <!ELEMENT strong (#PCDATA)>
+<!ELEMENT var (#PCDATA)>
 
 <!-- Notes -->
 <!ELEMENT note (%blocks;)>
 
 <!-- Notes -->
 <!ELEMENT note (%blocks;)>
@@ -56,7 +57,9 @@ SPDX-License-Identifier: CC0-1.0
 >
 
 <!-- Skos -->
 >
 
 <!-- Skos -->
+<!ELEMENT broader (resource)>
 <!ELEMENT inScheme (resource)>
 <!ELEMENT inScheme (resource)>
+<!ELEMENT narrower (resource)>
 
 <!-- Shacl -->
 <!ELEMENT declare (prefix,namespace)>
 
 <!-- Shacl -->
 <!ELEMENT declare (prefix,namespace)>
@@ -161,7 +164,7 @@ SPDX-License-Identifier: CC0-1.0
 <!ELEMENT Restriction (onProperty,(((minQualifiedCardinality|maxQualifiedCardinality|qualifiedCardinality),(onClass|onDataRange))|allValuesFrom|cardinality|hasValue|hasSelf|minCardinality|maxCardinality|someValuesFrom))>
 
 <!-- Declarations -->
 <!ELEMENT Restriction (onProperty,(((minQualifiedCardinality|maxQualifiedCardinality|qualifiedCardinality),(onClass|onDataRange))|allValuesFrom|cardinality|hasValue|hasSelf|minCardinality|maxCardinality|someValuesFrom))>
 
 <!-- Declarations -->
-<!ELEMENT Class (%annotations;,((equivalentClass*,subClassOf*,superClassOf*,disjointWith*,hasKey*)|complementOf|disjointUnionOf|intersectionOf|oneOf|unionOf))>
+<!ELEMENT Class (%annotations;,((equivalentClass*,disjointUnionOf*,subClassOf*,superClassOf*,disjointWith*,hasKey*)|complementOf|intersectionOf|oneOf|unionOf))>
 <!ATTLIST Class
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
 <!ATTLIST Class
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
@@ -194,7 +197,7 @@ SPDX-License-Identifier: CC0-1.0
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
 >
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
 >
-<!ELEMENT NamedIndividual (%annotations;,type*,sameAs*,differentFrom*,inScheme*)>
+<!ELEMENT NamedIndividual (%annotations;,type*,sameAs*,differentFrom*,inScheme*,broader*,narrower*)>
 <!ATTLIST NamedIndividual
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
 <!ATTLIST NamedIndividual
        name CDATA #IMPLIED
        status (plumbing|unstable|testing|stable|archaic) #IMPLIED
index 72bf2926996a29f4d453ec0f6e8d07ad447c6c08..9be16461f60c50194486562139aa09d09d0b8d58 100644 (file)
@@ -34,7 +34,9 @@ SHUSHEOPTS := $(MAKEOPTS) SRCDIR='$(SRCDIR)' DATADIR='$(DATADIR)' BUILDDIR='$(BU
 YSEME := .👥📤
 YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='$(BUILDTARGET)' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
 
 YSEME := .👥📤
 YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='$(BUILDTARGET)' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
 
-xmls := $(wildcard $(DATADIR)/*/*)
+PORT := 3000
+
+xmls := $(wildcard $(DATADIR)/*/[0-9A-Za-z_]*) $(wildcard $(DATADIR)/*/¦*)
 
 # ━ § Call out to ⛩📰 书社 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
 
 # ━ § Call out to ⛩📰 书社 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 
@@ -81,10 +83,14 @@ $(foreach xml,$(xmls),lint][$(xml)) : lint][% : .libxml2/xmllint
 
 .IGNORE : $(foreach xml,$(xmls),lint][$(xml)) ;
 
 
 .IGNORE : $(foreach xml,$(xmls),lint][$(xml)) ;
 
-.PHONY : FORCE build clean dry-sync gone lint $(foreach xml,$(xmls),lint][$(xml)) list prebuild sync uninstall ;
+.PHONY : FORCE build clean dry-sync gone lint $(foreach xml,$(xmls),lint][$(xml)) list prebuild serve sync uninstall ;
 
 gone : clean uninstall ;
 
 
 gone : clean uninstall ;
 
+serve :
+       @printf '%b\n' '\0033[1m\n\0033[7m NOTE: \0033[27m Visit <http://localhost:$(PORT)/> to view the site.\n\0033[7m       \0033[27m \n\0033[7m       \0033[27m Press control + C to exit.\n\0033[22m' >&2
+       @ruby ./scripts/serve.rb $(PORT) >&2
+
 uninstall :
        @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
 
 uninstall :
        @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
 
diff --git a/data/annotation_properties/ore¦similarTo b/data/annotation_properties/ore¦similarTo
new file mode 100644 (file)
index 0000000..428364e
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">similar to</label>
+       <comment xml:lang="en">
+               <p>
+                       Some·thing which this <ref target="ore:Aggregation">Aggregation</ref> is an expression of or “broadly equivalent” to.
+               </p>
+               <p>
+                       The intended usage of this property is to point from Aggregations, which are specifically sets of <ref target="ore:AggregatedResource">Aggregated Resources</ref>, to other things which might be interchangeable in some contexts, but which are modelled differently.
+                       For example, a book might be modelled as an Aggregation of chapters, as an Aggregation of pages, or as an atomic unit; this property could be used to link between these different representations.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-similarTo"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdfs:seeAlso"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="ore:Aggregation"/>
+       </domain>
+</AnnotationProperty>
index 7b72de6d94812bd13fdadf6a733d60b74a085fa5..bfd1844298d74474599b524063f6e9fecdd38004 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -27,4 +27,18 @@ SPDX-License-Identifier: CC0-1.0
                        </allValuesFrom>
                </Restriction>
        </subClassOf>
                        </allValuesFrom>
                </Restriction>
        </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:refinedBy"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <Class>
+                                       <complementOf>
+                                               <resource name="anno:State"/>
+                                       </complementOf>
+                               </Class>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
 </Class>
 </Class>
index 6a6bd9352ef41af42d079e31201bba37fc75720d..04e87ed1f5444d95e93674c312a9d5158f670fd7 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -20,14 +20,10 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(AWOL)" fragment="FeedOrEntry"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(AWOL)" fragment="FeedOrEntry"/>
        </isDefinedBy>
-       <equivalentClass>
-               <Class>
-                       <unionOf>
-                               <resource name="awol:Feed"/>
-                               <resource name="awol:Entry"/>
-                       </unionOf>
-               </Class>
-       </equivalentClass>
+       <disjointUnionOf>
+               <resource name="awol:Feed"/>
+               <resource name="awol:Entry"/>
+       </disjointUnionOf>
        <subClassOf>
                <resource name="awol:Version"/>
        </subClassOf>
        <subClassOf>
                <resource name="awol:Version"/>
        </subClassOf>
index c8e29bc75498fae996ffea966b5a048deca3db7d..f4dcf616871c40de302ea5ed3567338d187634d4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -8,7 +8,7 @@ SPDX-License-Identifier: CC0-1.0
        <label xml:lang="en">License Document</label>
        <comment xml:lang="en">
                <p>
        <label xml:lang="en">License Document</label>
        <comment xml:lang="en">
                <p>
-                       A legal document giving official permission to do something with a resource.
+                       A legal <ref target="foaf:Document">Document</ref> giving official permission to do something with a resource.
                </p>
        </comment>
        <isDefinedBy>
                </p>
        </comment>
        <isDefinedBy>
@@ -17,4 +17,7 @@ SPDX-License-Identifier: CC0-1.0
        <subClassOf>
                <resource name="dcterms:RightsStatement"/>
        </subClassOf>
        <subClassOf>
                <resource name="dcterms:RightsStatement"/>
        </subClassOf>
+       <subClassOf>
+               <resource name="foaf:Document"/>
+       </subClassOf>
 </Class>
 </Class>
index 72ecd5cb764f1d1b2d80d684b29bc024629c04a0..889207a4b92a6932fadc3644417761460888ef6c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -14,4 +14,13 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/LocationPeriodOrJurisdiction"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/LocationPeriodOrJurisdiction"/>
        </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="dcterms:Jurisdiction"/>
+                               <resource name="dcterms:Location"/>
+                               <resource name="dcterms:PeriodOfTime"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
 </Class>
 </Class>
index 67a197c45be50ff9f271dcd55bc03d49cfb3a54d..3f9a376b7196690fbdb4f11f3d1512513dbf949f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -14,6 +14,14 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaType"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaType"/>
        </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="dcterms:FileFormat"/>
+                               <resource name="dcterms:PhysicalMedium"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
        <subClassOf>
                <resource name="dcterms:MediaTypeOrExtent"/>
        </subClassOf>
        <subClassOf>
                <resource name="dcterms:MediaTypeOrExtent"/>
        </subClassOf>
index c21cc3c60a2b1fd90cc49ef61b0f852089bd3e38..ee72143c45f9723cfef3bc32c055db557189e103 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -14,4 +14,12 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaTypeOrExtent"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaTypeOrExtent"/>
        </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="dcterms:MediaType"/>
+                               <resource name="dcterms:SizeOrDuration"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
 </Class>
 </Class>
index 556a76caecd2eb23c1ef94b19aab2b60068ddb03..da3f23296a185fb9100643536dedb32daa2067bb 100644 (file)
@@ -24,10 +24,4 @@ SPDX-License-Identifier: CC0-1.0
        <equivalentClass>
                <resource name="dcterms:Agent"/>
        </equivalentClass>
        <equivalentClass>
                <resource name="dcterms:Agent"/>
        </equivalentClass>
-       <disjointWith>
-               <resource name="foaf:Document"/>
-       </disjointWith>
-       <disjointWith>
-               <resource name="foaf:Project"/>
-       </disjointWith>
 </Class>
 </Class>
index 1786df5aab8402770520ba75b4a6e32e8aa54bca..58f468fd9afbd5d23b57b72301966872eda3ea9d 100644 (file)
@@ -25,7 +25,4 @@ SPDX-License-Identifier: CC0-1.0
        <disjointWith>
                <resource name="foaf:Agent"/>
        </disjointWith>
        <disjointWith>
                <resource name="foaf:Agent"/>
        </disjointWith>
-       <disjointWith>
-               <resource name="foaf:Project"/>
-       </disjointWith>
 </Class>
 </Class>
diff --git a/data/classes/olo¦OrderedList b/data/classes/olo¦OrderedList
new file mode 100644 (file)
index 0000000..4b6d01a
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Ordered List</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="OrderedAggregation">Ordered Aggregation</ref> which has a definite <ref target="olo:length">length</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="OrderedList"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="OrderedAggregation"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="hasSlot"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="olo:Slot"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="olo:length"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/olo¦Slot b/data/classes/olo¦Slot
new file mode 100644 (file)
index 0000000..9b1eca9
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Slot</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="ore:Proxy">Proxy</ref> representing a single item associated with a numeric <ref target="olo:index">index</ref>.
+               </p>
+               <p>
+                       The <ref target="olo:item">item</ref> of a Slot provides the thing being it proxies.
+               </p>
+               <p>
+                       The index of a Slot should be less than or equal to the <ref target="olo:length">length</ref> of its <ref target="olo:ordered_list">ordered list</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="Slot"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="Slot"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="olo:ordered_list"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="olo:index"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="olo:item"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/ore¦AggregatedResource b/data/classes/ore¦AggregatedResource
new file mode 100644 (file)
index 0000000..6a40735
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Aggregated Resource</label>
+       <comment xml:lang="en">
+               <p>
+                       Some·thing which is <ref target="ore:isAggregatedBy">aggregated by</ref> some <ref target="ore:Aggregation">Aggregation</ref>.
+               </p>
+               <p>
+                       This class, on its own, does not imply much of anything, and there isn¦t much need to use it directly.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="aggr_res"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="ore:isAggregatedBy"/>
+                       </onProperty>
+                       <minCardinality>1</minCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/ore¦Aggregation b/data/classes/ore¦Aggregation
new file mode 100644 (file)
index 0000000..7ecefc4
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Aggregation</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcmitype:Collection">Collection</ref> of (presumably related) <ref target="ore:AggregatedResource">Aggregated Resources</ref>, grouped together such that the set can be treated as a single thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="aggr"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcmitype:Collection"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/ore¦Proxy b/data/classes/ore¦Proxy
new file mode 100644 (file)
index 0000000..78b8341
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Proxy</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="Proxy">Proxy</ref> of some <ref target="ore:AggregatedResource">Aggregated Resource</ref> as it exists within a specific <ref target="ore:Aggregation">Aggregation</ref>.
+               </p>
+               <p>
+                       State·ments about Aggregated Resources which are specific to a particular Aggregation need to be made on a Proxy, as such state·ments are not “generally true”.
+                       It is recommended that Proxies not be Aggregated Resources themselves, but this isn¦t formally required.
+               </p>
+               <p>
+                       There is no restriction that an Aggregated Resource only have one Proxy for a given Aggregation.
+                       The restrictions on <ptr target="ore:proxyFor"/> and <ptr target="ore:proxyIn"/> are not formally expressed in <ptr target="(OAI-ORE)"/>, but are in <ptr target="(PCDM)"/>.
+               </p>
+               <p>
+                       Horizontal (previous~next) linking for Proxies is described by <ptr target="(PCDM)"/>, with the quirk of using the spelling <resource name="rel:prev"/> for <ptr target="rel:previous" type="property"/>.
+                       This ontology only recognizes the spelling <resource name="rel:previous"/>, which is formally defined by <ptr target="(RFC5005)"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="proxy"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)" fragment="oreproxy"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="Proxy"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="ore:proxyFor"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="ore:proxyIn"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rel:previous"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rel:previous"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="ore:Proxy"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rel:next"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rel:next"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="ore:Proxy"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/owl¦Nothing b/data/classes/owl¦Nothing
new file mode 100644 (file)
index 0000000..d7957ef
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Nothing</label>
+       <comment xml:lang="en">
+               <p>
+                       No thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_Nothing"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/owl¦Thing b/data/classes/owl¦Thing
new file mode 100644 (file)
index 0000000..aef4566
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Thing</label>
+       <comment xml:lang="en">
+               <p>
+                       Any thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_Thing"/>
+       </isDefinedBy>
+       <hasKey>
+               <resource name="in"/>
+               <resource name="n"/>
+       </hasKey>
+</Class>
diff --git a/data/classes/pcdmuse¦ExtractedText b/data/classes/pcdmuse¦ExtractedText
new file mode 100644 (file)
index 0000000..2e174ff
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Extracted Text</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is a textual representation appropriate for fulltext indexing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦IntermediateFile b/data/classes/pcdmuse¦IntermediateFile
new file mode 100644 (file)
index 0000000..e999864
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Intermediate File</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is high‐quality and suitable for use in creating derivatives or for other additional processing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦OriginalFile b/data/classes/pcdmuse¦OriginalFile
new file mode 100644 (file)
index 0000000..d0dca83
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Original File</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is in its original creation format.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦PreservationFile b/data/classes/pcdmuse¦PreservationFile
new file mode 100644 (file)
index 0000000..1380e66
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Preservation File</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is appropriate for long‐term preservation.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦ServiceFile b/data/classes/pcdmuse¦ServiceFile
new file mode 100644 (file)
index 0000000..c924d80
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Service File</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is of reasonable quality for end‐users.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦ThumbnailImage b/data/classes/pcdmuse¦ThumbnailImage
new file mode 100644 (file)
index 0000000..17d4b5b
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Thumbnail Image</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is a low‐quality, thumbnail representation of some thing, appropriate for use as an icon.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+       <subClassOf>
+               <resource name="foaf:Image"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmuse¦Transcript b/data/classes/pcdmuse¦Transcript
new file mode 100644 (file)
index 0000000..47455c3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Transcript</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which is a textual representation appropriate for presentation to users.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:File"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdmworks¦FileSet b/data/classes/pcdmworks¦FileSet
new file mode 100644 (file)
index 0000000..ac53776
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">File Set</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="pcdm:Object">Object</ref> representing a single conceptual entity which might have multiple <ref target="pcdm:File">File</ref> representations.
+               </p>
+               <p>
+                       File Sets describe the conceptual entity that Files are concrete manifestations of.
+                       When that entity has multiple manifestations, it may <ref target="pcdm:hasFile">have</ref> multiple Files.
+                       For example, a page in a book may exist in both Tiff and P·N·G format.
+                       These are separate files, but they represent the same conceptual entity, the page.
+               </p>
+               <p>
+                       File Sets do not <ref target="pcdm:hasMember">have members</ref>.
+                       Typically, they are <ref target="pcdm:isMemberOf">members of</ref> <ref target="pcdm:Work">Works</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:Object"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="pcdm:hasMember"/>
+                       </onProperty>
+                       <maxCardinality>0</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <resource name="pcdmworks:Work"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/pcdmworks¦Work b/data/classes/pcdmworks¦Work
new file mode 100644 (file)
index 0000000..08af3d5
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Work</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="pcdm:Object">Object</ref> representing an abstract intellectual entity.
+               </p>
+               <p>
+                       Works differ from Objects more generally in that they do not themselves <ref target="pcdm:hasFile">have files</ref>.
+                       Instead, they <ref target="pcdm:hasMember">have member</ref> <ref target="pcdmworks:FileSet">File Sets</ref> which contain their files.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="pcdm:Object"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="pcdm:hasFile"/>
+                       </onProperty>
+                       <maxCardinality>0</maxCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/pcdm¦Collection b/data/classes/pcdm¦Collection
new file mode 100644 (file)
index 0000000..6b45c28
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Collection</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which can <ref target="pcdm:hasMember">have member</ref> <ref target="pcdm:Object">Objects</ref> or other Collections.
+               </p>
+               <p>
+                       <ptr target="(PCDM)"/> defines semantics for <ptr target="rel:first" type="property"/> and <ptr target="rel:last" type="property"/> (to point to a <ref target="ore:Proxy">Proxy</ref> of the first member), but this is confused:
+                       These terms are meant to be used for horizontal linking between aggregation members, not vertical linking between aggregations and the things they aggregate.
+                       Consequently, the usage of these properties with Collections is not recommended by this ontology.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)" fragment="pcdmcollection"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/pcdm¦File b/data/classes/pcdm¦File
new file mode 100644 (file)
index 0000000..fbc4708
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">File</label>
+       <comment xml:lang="en">
+               <p>
+                       A sequence of binary data, as contained within a specific <ref target="pcdm:Object">Object</ref>.
+               </p>
+               <p>
+                       The <ref target="dcterms:extent">extent</ref> is meant to be interpreted as a file size in bytes (but the exact representation is left fuzzy), and the <ref target="dc11:format">format</ref> is meant to be interpreted as an internet media type.
+                       For the latter, the more specific property <ptr target="awol:type"/> may be used.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)" fragment="pcdmfile"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="siocactions:DigitalArtifact"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="pcdm:isFileOf"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="dc11:format"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="dc11:format"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="xsd:string"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="dcterms:extent"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="dcterms:created"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="dcterms:modified"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <resource name="pcdm:Collection"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="pcdm:Object"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/pcdm¦Object b/data/classes/pcdm¦Object
new file mode 100644 (file)
index 0000000..2d23008
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Object</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> representing an intellectual entity of some kind.
+               </p>
+               <p>
+                       Objects may <ref target="pcdm:hasMember">have member</ref> Objects (but not Collections) and may also <ref target="pcdm:hasFile">have</ref> <ref target="pcdm:File">Files</ref>.
+                       The <ptr target="pcdmworks:Work"/> and <ptr target="pcdmworks:FileSet"/> subclasses provide a more sophisticated modelling.
+               </p>
+               <p>
+                       <ptr target="(PCDM)"/> defines semantics for <ptr target="rel:first" type="property"/> and <ptr target="rel:last" type="property"/> (to point to a <ref target="ore:Proxy">Proxy</ref> of the first member), but this is confused:
+                       These terms are meant to be used for horizontal linking between aggregation members, not vertical linking between aggregations and the things they aggregate.
+                       Consequently, the usage of these properties with Objects is not recommended by this ontology.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)" fragment="pcdmobject"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="pcdm:hasMember"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="pcdm:Object"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <resource name="pcdm:Collection"/>
+       </disjointWith>
+</Class>
index 05d029ed36e97060b3ee1f93b4af02664b920543..1df202a276d9ceefa30abfac35dd91fd81295f12 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -14,6 +14,9 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(SKOS)" fragment="Label"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(SKOS)" fragment="Label"/>
        </isDefinedBy>
+       <subClassOf>
+               <resource name="awol:PlainText"/>
+       </subClassOf>
        <subClassOf>
                <Restriction>
                        <onProperty>
        <subClassOf>
                <Restriction>
                        <onProperty>
index 72020e9104133dfe73bd833378fce03d3cd3f399..d1f03e2c9b30c0c23dd4566af01cbff6f2993eac 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE Class SYSTEM "../../DTD">
@@ -19,6 +19,9 @@ SPDX-License-Identifier: CC0-1.0
        <isDefinedBy>
                <SpecificResource source="(SKOS)" fragment="Collection"/>
        </isDefinedBy>
        <isDefinedBy>
                <SpecificResource source="(SKOS)" fragment="Collection"/>
        </isDefinedBy>
+       <subClassOf>
+               <resource name="dcmitype:Collection"/>
+       </subClassOf>
        <disjointWith>
                <resource name="skos:Concept"/>
        </disjointWith>
        <disjointWith>
                <resource name="skos:Concept"/>
        </disjointWith>
diff --git a/data/classes/¦OrderedAggregation b/data/classes/¦OrderedAggregation
new file mode 100644 (file)
index 0000000..a82ef3d
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class status="testing">
+       <label xml:lang="en">Ordered Aggregation</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which may <ref target="hasSlot">have slots</ref> that are orderable by positive integral <ref target="n">local notation</ref>.
+               </p>
+       </comment>
+       <subClassOf>
+               <resource name="ore:Aggregation"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="hasSlot"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="n"/>
+                                       </onProperty>
+                                       <allValuesFrom>
+                                               <resource name="xsd:positiveInteger"/>
+                                       </allValuesFrom>
+                               </Restriction>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <Class>
+                       <intersectionOf>
+                               <resource name="Branch"/>
+                               <resource name="BNSComponent"/>
+                       </intersectionOf>
+               </Class>
+       </disjointWith>
+</Class>
diff --git a/data/classes/¦Proxy b/data/classes/¦Proxy
new file mode 100644 (file)
index 0000000..7c544b1
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class status="testing">
+       <label xml:lang="en">Proxy</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:ResourceSelection">Resource Selection</ref> which selects its <ref target="anno:hasSource">source</ref> in its entirety.
+               </p>
+               <p>
+                       Proxies may be used to make state·ments which are only contextually true; the Proxy provides the appropriate context for interpreting the statement.
+                       For example, in <ptr target="(OAI-ORE)"/>, <ref target="ore:Proxy">Proxies</ref> are used to make state·ments which are only true in the context of a particular <ref target="ore:Aggregation">Aggregation</ref>.
+               </p>
+       </comment>
+       <subClassOf>
+               <resource name="anno:ResourceSelection"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasSelector"/>
+                       </onProperty>
+                       <hasValue>
+                               <resource name="Everything"/>
+                       </hasValue>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasState"/>
+                       </onProperty>
+                       <hasValue>
+                               <resource name="AnyWhichWay"/>
+                       </hasValue>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/¦Slot b/data/classes/¦Slot
new file mode 100644 (file)
index 0000000..8668979
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class status="testing">
+       <label xml:lang="en">Slot</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="ore:Proxy">Proxy</ref> which has a <ref target="n">local notation</ref>, unique within the <ref target="ore:Aggregation">Aggregation</ref> that it is <ref target="ore:proxyIn">proxy in</ref>.
+               </p>
+       </comment>
+       <subClassOf>
+               <resource name="ore:Proxy"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <ObjectProperty>
+                                       <inverseOf>
+                                               <resource name="hasSlot"/>
+                                       </inverseOf>
+                               </ObjectProperty>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <ObjectProperty>
+                                       <inverseOf>
+                                               <resource name="inSlot"/>
+                                       </inverseOf>
+                               </ObjectProperty>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="n"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <resource name="ore:Aggregation"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/¦UnicodeScalarValue b/data/classes/¦UnicodeScalarValue
new file mode 100644 (file)
index 0000000..e545390
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class status="testing">
+       <label xml:lang="en">Unicode Scalar Value</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing with a <ref target="rdf:value">value</ref> between 0 and 10FFFF₁₆ but not between D800₁₆ and DFFF₁₆, representing a valid Unicode scalar value.
+               </p>
+               <p>
+                       Not all Unicode scalar values can be represented in a <resource name="xsd:string"/>, so representing them as integers is required.
+                       Unicode Scalar Values are uniquely identified by their value.
+               </p>
+       </comment>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <Datatype>
+                                       <unionOf>
+                                               <Datatype>
+                                                       <onDatatype>
+                                                               <resource name="xsd:integer"/>
+                                                       </onDatatype>
+                                                       <withRestrictions>
+                                                               <minInclusive datatype="xsd:integer">0</minInclusive>
+                                                               <maxInclusive datatype="xsd:integer">55295</maxInclusive>
+                                                       </withRestrictions>
+                                               </Datatype>
+                                               <Datatype>
+                                                       <onDatatype>
+                                                               <resource name="xsd:integer"/>
+                                                       </onDatatype>
+                                                       <withRestrictions>
+                                                               <minInclusive datatype="xsd:integer">57344</minInclusive>
+                                                               <maxInclusive datatype="xsd:integer">1114111</maxInclusive>
+                                                       </withRestrictions>
+                                               </Datatype>
+                                       </unionOf>
+                               </Datatype>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+       <hasKey>
+               <resource name="rdf:value"/>
+       </hasKey>
+</Class>
diff --git a/data/classes/¦UnicodeString b/data/classes/¦UnicodeString
new file mode 100644 (file)
index 0000000..29e45a0
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class status="testing">
+       <label xml:lang="en">Unicode String</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="olo:OrderedList">Ordered List</ref> of <ref target="UnicodeScalarValue">Unicode Scalar Values</ref>.
+               </p>
+               <p>
+                       Unicode Strings essentially provide an alternative encoding of <resource name="xsd:string"/> in a way which can be reasoned about in R·D·F.
+                       Some Unicode scalar values cannot be represented in a <resource name="xsd:string"/>, so strings containing them can only be represented in this manner.
+               </p>
+       </comment>
+       <subClassOf>
+               <resource name="olo:OrderedList"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="olo:slot"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="olo:item"/>
+                                       </onProperty>
+                                       <allValuesFrom>
+                                               <resource name="UnicodeScalarValue"/>
+                                       </allValuesFrom>
+                               </Restriction>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/datatype_properties/olo¦index b/data/datatype_properties/olo¦index
new file mode 100644 (file)
index 0000000..4c479a8
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">index</label>
+       <comment xml:lang="en">
+               <p>
+                       The index of this <ref target="olo:Slot">Slot</ref>.
+               </p>
+               <p>
+                       Indices start from 1.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="index"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="n"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="olo:Slot"/>
+       </domain>
+       <range>
+               <resource name="xsd:positiveInteger"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/olo¦length b/data/datatype_properties/olo¦length
new file mode 100644 (file)
index 0000000..468e4fc
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">length</label>
+       <comment xml:lang="en">
+               <p>
+                       The length of this <ref target="olo:OrderedList">Ordered List</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="length"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="olo:OrderedList"/>
+       </domain>
+       <range>
+               <resource name="xsd:nonNegativeInteger"/>
+       </range>
+</DatatypeProperty>
index 7a8953af356b73494f851a0b1d03a56313f49e7d..a34572ca08d7804bf7e9e0a643037cbfd8fc7844 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
@@ -15,12 +15,9 @@ SPDX-License-Identifier: CC0-1.0
                <SpecificResource source="(SKOS)" fragment="xl-literalForm"/>
        </isDefinedBy>
        <subPropertyOf>
                <SpecificResource source="(SKOS)" fragment="xl-literalForm"/>
        </isDefinedBy>
        <subPropertyOf>
-               <resource name="rdf:value"/>
+               <resource name="awol:body"/>
        </subPropertyOf>
        <domain>
                <resource name="skosxl:Label"/>
        </domain>
        </subPropertyOf>
        <domain>
                <resource name="skosxl:Label"/>
        </domain>
-       <range>
-               <resource name="rdf:PlainLiteral"/>
-       </range>
 </DatatypeProperty>
 </DatatypeProperty>
diff --git a/data/datatype_properties/¦n b/data/datatype_properties/¦n
new file mode 100644 (file)
index 0000000..34ebf29
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty status="testing">
+       <label xml:lang="en">local notation</label>
+       <comment xml:lang="en">
+               <p>
+                       An integer, string, or time·stamp which identifies and orders a thing within its <ref target="in">local context</ref>.
+               </p>
+               <p>
+                       String values can either be valid <resource name="xsd:NCName"/>¦s or else have the form of a <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> with no time·zone component.
+                       These possibilities were selected to ensure that the lexical forms of each type are disjoint.
+               </p>
+               <p>
+                       Because this property is functional, a <resource name="Proxy"/> must be used when local notation depends on a particular context.
+               </p>
+               <p>
+                       Correctly ordering things by local notation involves two steps.
+                       First, the local notation must be split into a tuple of two parts :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       If it is a string which begins with an underscore and contains another underscore which is followed by a period :⁠—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       Let <var>base</var> be the portion of the string which follows the initial underscore and precedes the first successive underscore‐period sequence.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Let <var>mod</var> be the portion of the string which follows that same underscore‐period sequence.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       If <var>mod</var> is not itself a valid canonical representation for some local notation, then the first value of the tuple is the original string, and the second value is the empty string.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, if <var>base</var> is a valid <resource name="xsd:NCName"/> or else has the form of a <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> with no time·zone component, then the tuple is {<var>base</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, if <var>base</var> is the canonical representation of some <resource name="xsd:integer"/> <var>int</var>, then the tuple is {<var>int</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, make the following modifications to <var>base</var> :⁠—
+                                               </p>
+                                               <list>
+                                                       <item>
+                                                               <p>
+                                                                       Replace all underscores in <var>base</var> with plusses.
+                                                               </p>
+                                                       </item>
+                                                       <item>
+                                                               <p>
+                                                                       If <var>base</var> contains <code>T</code>, replace the first two periods in <var>base</var> which follow <code>T</code> (if present) with colons.
+                                                               </p>
+                                                       </item>
+                                                       <item>
+                                                               <p>
+                                                                       If <var>base</var> ends in a digit, replace the final remaining period in <var>base</var> (if present) with a colon.
+                                                               </p>
+                                                       </item>
+                                               </list>
+                                               <p>
+                                                       If, after making the above substitutions, <var>base</var> is the canonical representation of some <resource name="xsd:dateTimeStamp"/> <var>time</var>, then the tuple is {<var>time</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, the first value of the tuple is the original string, and the second value is the empty string.
+                                               </p>
+                                       </item>
+                               </list>
+                       </item>
+                       <item>
+                               <p>
+                                       Otherwise, the first value of the tuple is the original string, and the second value is the empty string.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       Then, the values of the tuples can be sorted according to the following rules, with the first part taking priority over the second :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       Empty strings are always sorted first.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Integers are sorted by numeric value and come after empty strings.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Time·stamps and strings which match <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> come after integers, and are sorted according to their corresponding “time on timeline” values, with the following modifications :⁠—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       For <resource name="xsd:gYearMonth"/> values, the missing day component is treated as the first rather than the last day of the month
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       When the “time on timeline” value is the same, <resource name="xsd:gYearMonth"/> sorts before <resource name="xsd:date"/>, and <resource name="xsd:date"/> sorts before <resource name="xsd:dateTimeStamp"/>.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       When the “time on timeline” value is the same for two <resource name="xsd:dateTimeStamp"/> values, they are sorted based on their timezone offsets in ascending order.
+                                               </p>
+                                       </item>
+                               </list>
+                       </item>
+                       <item>
+                               <p>
+                                       Strings which match <resource name="xsd:NCName"/> follow the above, and are sorted lexically by code·point value.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       The above algorithm effectively establishes a special microsyntax in which <code>_base_.mod</code> will always sort after <code>base</code>, regardless of <code>base</code>¦s type.
+                       When <code>base</code> is a <resource name="xsd:dateTimeStamp"/>, a few reversible modifications need to be made in order to satisfy the <resource name="xsd:NCName"/> syntax :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       Any colons in the time component or time·zone offset must be replaced with periods.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       A plus in the time·zone offset, if present, must be replaced with an underscore.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+       <domain>
+               <Restriction>
+                       <onProperty>
+                               <resource name="in"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </domain>
+       <range>
+               <Datatype>
+                       <unionOf>
+                               <resource name="xsd:integer"/>
+                               <resource name="xsd:NCName"/>
+                               <Datatype>
+                                       <onDatatype>
+                                               <resource name="xsd:string"/>
+                                       </onDatatype>
+                                       <withRestrictions>
+                                               <pattern>[0-9]{4}(-[0-9]{2}){1,2}</pattern>
+                                       </withRestrictions>
+                               </Datatype>
+                               <resource name="xsd:dateTimeStamp"/>
+                       </unionOf>
+               </Datatype>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/¦ncName b/data/datatype_properties/¦ncName
new file mode 100644 (file)
index 0000000..1284a1b
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty status="testing">
+       <label xml:lang="en">n·c name</label>
+       <comment xml:lang="en">
+               <p>
+                       An <resource name="xsd:NCName"/> identifier for this thing.
+               </p>
+       </comment>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:NCName"/>
+       </range>
+</DatatypeProperty>
index fd977d2817b23cd1d208a9cb1d8fa8582bf2f2ae..32910a178eed0569125a08e8893e92f5911aa598 100644 (file)
@@ -36,7 +36,7 @@ SPDX-License-Identifier: CC0-1.0
                        <item>
                                <p>
                                        <resource name="foaf:mbox"/> and <resource name="foaf:mbox_sha1sum"/> are properties for identifying the original, not current, owner of an internet mailbox, and thus not useful for the actual sending of messages.
                        <item>
                                <p>
                                        <resource name="foaf:mbox"/> and <resource name="foaf:mbox_sha1sum"/> are properties for identifying the original, not current, owner of an internet mailbox, and thus not useful for the actual sending of messages.
-                                       Originally, these properties were conceived as a means of determining <ref target="foaf:Agent">Agent</ref> identity; in the case of <resource name="foaf:mbox"/>, this intent is much better served by just using a <code>tag:</code> U·R·I, which can be email‐derived.
+                                       Originally, these properties were conceived as a means of determining <ref target="foaf:Agent">Agent</ref> identity; in the case of <resource name="foaf:mbox"/>, this intent is much better served by just using a <code>tag:</code> U·R·I, which can be e·mail‐derived.
                                        <resource name="foaf:mbox_sha1sum"/> is of questionable utility in practice.
                                </p>
                        </item>
                                        <resource name="foaf:mbox_sha1sum"/> is of questionable utility in practice.
                                </p>
                        </item>
diff --git a/data/named_individuals/_IIIF_ b/data/named_individuals/_IIIF_
new file mode 100644 (file)
index 0000000..26d0553
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024, 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://iiif.io/api/">
+       <label xml:lang="en">I·I·I·F</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="doap:Specification"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_OAI-ORE_ b/data/named_individuals/_OAI-ORE_
new file mode 100644 (file)
index 0000000..f1785fe
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.openarchives.org/ore/1.0/vocabulary">
+       <label xml:lang="en">O·A·I Ore</label>
+       <comment xml:lang="en">
+               <p>
+                       The Open Archives Intiative (O·A·I) vocabulary for Object Re·use and Exchange (Ore) provides a set of basic terms for defining aggregations of resources and the relationships between them.
+                       It also introduces the concept of a “Resource Map”, which is an R·D·F graph containing a description of an aggregation conforming to its vocabulary and data model.
+               </p>
+               <p>
+                       The terms for describing aggregations are generally use·ful, and have been extended by models like <ptr target="(PCDM)"/>; they are included in this ontology.
+                       The Resource Map concept and its related terms (<resource name="ore:ResourceMap"/>, <resource name="ore:describes"/>, <resource name="ore:isDescribedBy"/>) is less obviously use·ful, and has been excluded for now.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="doap:Specification"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_OLO_ b/data/named_individuals/_OLO_
new file mode 100644 (file)
index 0000000..9dde828
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://purl.org/ontology/olo/core">
+       <label xml:lang="en">Olo</label>
+       <comment xml:lang="en">
+               <p>
+                       The Ordered List Ontology (Olo) provides, as its name implies, a small number of terms for use describing ordered lists.
+                       This help to rectify the faults of other list‐specification mechanisms in consort with Owl; <ref target="rdf:List">Lists</ref> are hard to reason about and <ref target="rdfs:Container">Containers</ref> require an implicit understanding of <resource name="rdfs:ContainerMembershipProperty"/> which Owl does not provide.
+               </p>
+               <p>
+                       This ontology interprets <ref target="olo:OrderedList">Ordered Lists</ref> as <ref target="ore:Aggregation">Aggregations</ref>, and their <ref target="olo:Slot">Slots</ref> as a kind of <ref target="ore:Proxy">Proxy</ref>.
+                       This makes them an ergonomic extension to the mechanisms specified in <ptr target="(OAI-ORE)"/>.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="doap:Specification"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_PCDM_ b/data/named_individuals/_PCDM_
new file mode 100644 (file)
index 0000000..a685b44
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://github.com/duraspace/pcdm/wiki">
+       <label xml:lang="en">P·C·D·M</label>
+       <comment xml:lang="en">
+               <p>
+                       The Portland Common Data Model (P·C·D·M) is a set of vocabularies published by Duraspace and used by certain institutions and communities in the library and cultural heritage sphere for modelling their collections.
+                       It comprises five parts :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <strong>P·C·D·M Models</strong> builds on top of <ptr target="(OAI-ORE)"/> to provide basic structural modelling for <ref target="pcdm:Collection">Collections</ref>, their <ref target="pcdm:Object">Objects</ref>, and the <ref target="pcdm:File">Files</ref> associated with them.
+                                       This ontology only omits the term <resource name="pcdm:AlternateOrder"/>, whose meaning and utility is unclear.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>P·C·D·M Use</strong> provides subclasses for <ptr target="pcdm:File"/> which identify its intended <em>use</em>.
+                                       The choice of modelling this using classes, rather than a relationship like <ptr target="anno:hasPurpose"/>, is a bit suspect, but a conversion from one to the other is not especially difficult.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>P·C·D·M Rights</strong> provides a few terms for specifying temporary, time‐limited overrides to rights statements.
+                                       As this is use·case is fairly domain‐specific and niche, this ontology does not bother defining its terms.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>P·C·D·M Works</strong> expands P·C·D·M Models to add the concepts of <ref target="pcdmworks:Work">Work</ref> and <ref target="pcdmworks:FileSet">File Set</ref>.
+                                       It also defines two classes for use with <ptr target="(IIIF)"/>, <resource name="pcdmworks:Range"/> and <resource name="pcdmworks:TopRange"/>, which are more suspect in utility and not included in this ontology.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>P·C·D·M File Formats</strong> provides a set of <ref target="skos:Concept">Concepts</ref> for denoting specific file format genres.
+                                       These are a bit undocumented, and don¦t have a clear use·case, so they not been encoded into this ontology.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC5005_ b/data/named_individuals/_RFC5005_
new file mode 100644 (file)
index 0000000..072ee8e
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc5005">
+       <label xml:lang="en">Feed Paging and Archiving</label>
+       <comment xml:lang="en">
+               <p>
+                       This specification describes the pagination and archiving of Atom feeds, and consequently is a kind of extension to <ptr target="(RFC4287)"/>.
+                       As with that specification, it provides the normative definition for a few <ref target="awol:RelationType">Relation Types</ref>.
+                       Note that <resource name="rel:previous"/> and <resource name="rel:next"/> were previously defined in <ptr target="(HTML)"/>, but H·T·M·L¦s approach to linking is generally unsuitable for use with R·D·F and not considered normative by this ontology.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="doap:Specification"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦current b/data/named_individuals/rel¦current
new file mode 100644 (file)
index 0000000..a1f15b3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Current</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a thing which contains the most recent entries in a feed.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦first b/data/named_individuals/rel¦first
new file mode 100644 (file)
index 0000000..4c0aafc
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">First</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a thing which is first in the current series.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦last b/data/named_individuals/rel¦last
new file mode 100644 (file)
index 0000000..c9049a3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Last</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a thing which is last in the current series.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦next b/data/named_individuals/rel¦next
new file mode 100644 (file)
index 0000000..7b28e0f
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Next</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a following thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦next-archive b/data/named_individuals/rel¦next-archive
new file mode 100644 (file)
index 0000000..ce8092e
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Next Archive</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a following archival thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦prev-archive b/data/named_individuals/rel¦prev-archive
new file mode 100644 (file)
index 0000000..739cb6d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Previous Archive</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a preceding archival thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦previous b/data/named_individuals/rel¦previous
new file mode 100644 (file)
index 0000000..1c904cf
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Previous</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating a preceding thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/¦AnyWhichWay b/data/named_individuals/¦AnyWhichWay
new file mode 100644 (file)
index 0000000..6db42fc
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual status="testing">
+       <label xml:lang="en">Any Which Way</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:State">State</ref> which reflects a thing regardless of, or in any, state, time, or condition.
+               </p>
+       </comment>
+       <type>
+               <resource name="anno:State"/>
+       </type>
+       <type>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:refinedBy"/>
+                       </onProperty>
+                       <maxCardinality>0</maxCardinality>
+               </Restriction>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/¦Everything b/data/named_individuals/¦Everything
new file mode 100644 (file)
index 0000000..2546734
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual status="testing">
+       <label xml:lang="en">Everything</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which selects the entirety of a thing.
+               </p>
+       </comment>
+       <type>
+               <resource name="anno:Selector"/>
+       </type>
+       <type>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:refinedBy"/>
+                       </onProperty>
+                       <maxCardinality>0</maxCardinality>
+               </Restriction>
+       </type>
+</NamedIndividual>
index 80dcac69e486632c46bef25affd9bf49089f45f7..04225f602bde309c692791117ede155fbb79202c 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 <ObjectProperty>
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 <ObjectProperty>
-       <label xml:lang="en">has email</label>
+       <label xml:lang="en">has e·mail</label>
        <comment xml:lang="en">
                <p>
                        An electronic mailbox for this <ref target="contact:SocialEntity">Social Entity</ref>.
        <comment xml:lang="en">
                <p>
                        An electronic mailbox for this <ref target="contact:SocialEntity">Social Entity</ref>.
index 6ba10e7c9ec3df24ec21abbeb3d87ead29c10077..9351beef95ae93f81f06e5ee7273394a1dcf80ee 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
@@ -8,7 +8,7 @@ SPDX-License-Identifier: CC0-1.0
        <label xml:lang="en">has coverage</label>
        <comment xml:lang="en">
                <p>
        <label xml:lang="en">has coverage</label>
        <comment xml:lang="en">
                <p>
-                       A <ref target="dcterms:Location">Location</ref>, <ref target="dcterms:PeriodOfTime">PeriodOfTime</ref>, or <ref target="dcterms:Jurisdiction">Jurisdiction</ref> of this thing, which this thing is applicable to, or under which this thing is relevant.
+                       A <ref target="dcterms:LocationPeriodOrJurisdiction">Location, Period, Or Jurisdiction</ref> of this thing, which this thing is applicable to, or under which this thing is relevant.
                </p>
                <p>
                        <ptr target="(DCMI)"/> states that because coverage is so broadly defined, it is preferable to use the more specific subproperties <ptr target="dcterms:temporal"/> and <ptr target="dcterms:spatial"/>.
                </p>
                <p>
                        <ptr target="(DCMI)"/> states that because coverage is so broadly defined, it is preferable to use the more specific subproperties <ptr target="dcterms:temporal"/> and <ptr target="dcterms:spatial"/>.
@@ -18,12 +18,6 @@ SPDX-License-Identifier: CC0-1.0
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/coverage"/>
        </isDefinedBy>
        <range>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/coverage"/>
        </isDefinedBy>
        <range>
-               <Class>
-                       <unionOf>
-                               <resource name="dcterms:Location"/>
-                               <resource name="dcterms:PeriodOfTime"/>
-                               <resource name="dcterms:Jurisdiction"/>
-                       </unionOf>
-               </Class>
+               <resource name="dcterms:LocationPeriodOrJurisdiction"/>
        </range>
 </ObjectProperty>
        </range>
 </ObjectProperty>
index 805e9a7b73e577a75bace6dcb7cac6c1f1285629..8c44f13aef115759a3c677d55359196e8adc6e2c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
@@ -8,18 +8,13 @@ SPDX-License-Identifier: CC0-1.0
        <label xml:lang="en">in format</label>
        <comment xml:lang="en">
                <p>
        <label xml:lang="en">in format</label>
        <comment xml:lang="en">
                <p>
-                       A <ref target="dcterms:FileFormat">File Format</ref>, <ref target="dcterms:PhysicalMedioum">Physical Medium</ref>, or <ref target="dcterms:SizeOrDuration">Size Or Duration</ref> of this thing.
+                       A <ref target="dcterms:MediaTypeOrExtent">Media Type Or Extent</ref> of this thing.
                </p>
        </comment>
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/format"/>
        </isDefinedBy>
        <range>
                </p>
        </comment>
        <isDefinedBy>
                <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/format"/>
        </isDefinedBy>
        <range>
-               <Class>
-                       <unionOf>
-                               <resource name="dcterms:MediaType"/>
-                               <resource name="dcterms:SizeOrDuration"/>
-                       </unionOf>
-               </Class>
+               <resource name="dcterms:MediaTypeOrExtent"/>
        </range>
 </ObjectProperty>
        </range>
 </ObjectProperty>
diff --git a/data/object_properties/olo¦item b/data/object_properties/olo¦item
new file mode 100644 (file)
index 0000000..3a162a5
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" irreflexive="yes">
+       <label xml:lang="en">has item</label>
+       <comment xml:lang="en">
+               <p>
+                       The thing being proxied by this <ref target="olo:Slot">Slot</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="item"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <ObjectProperty>
+                       <inverseOf>
+                               <resource name="inSlot"/>
+                       </inverseOf>
+               </ObjectProperty>
+       </subPropertyOf>
+       <domain>
+               <resource name="olo:Slot"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/olo¦next b/data/object_properties/olo¦next
new file mode 100644 (file)
index 0000000..56a08b1
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" inverseFunctional="yes">
+       <label xml:lang="en">has next</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="olo:Slot">Slot</ref> which immediately follows this Slot (by index) in its <ref target="olo:OrderedList">Ordered List</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="next"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rel:next"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="olo:Slot"/>
+       </domain>
+       <range>
+               <resource name="olo:Slot"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/olo¦ordered_list b/data/object_properties/olo¦ordered_list
new file mode 100644 (file)
index 0000000..ad0cad5
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has ordered list</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="olo:OrderedList">Ordered List</ref> of this <ref target="olo:Slot">Slot</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="ordered_list"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:proxyIn"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="olo:slot"/>
+       </inverseOf>
+       <domain>
+               <resource name="olo:Slot"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/olo¦previous b/data/object_properties/olo¦previous
new file mode 100644 (file)
index 0000000..4d9b389
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" inverseFunctional="yes">
+       <label xml:lang="en">has previous</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="olo:Slot">Slot</ref> which immediately precedes this Slot (by index) in its <ref target="olo:OrderedList">Ordered List</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="previous"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rel:previous"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="olo:next"/>
+       </inverseOf>
+       <domain>
+               <resource name="olo:Slot"/>
+       </domain>
+       <range>
+               <resource name="olo:Slot"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/olo¦slot b/data/object_properties/olo¦slot
new file mode 100644 (file)
index 0000000..423d1ec
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has slot</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="olo:Slot">Slot</ref> in this <ref target="olo:OrderedList">Ordered List</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OLO)" fragment="slot"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="hasSlot"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="olo:OrderedList"/>
+       </domain>
+       <range>
+               <resource name="olo:Slot"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/ore¦aggregates b/data/object_properties/ore¦aggregates
new file mode 100644 (file)
index 0000000..4fb4e59
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">aggregates</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:AggregatedResource">Aggregated Resource</ref> which is a member of this <ref target="ore:Aggregation">Aggregation</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-aggregates"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:hasPart"/>
+       </subPropertyOf>
+       <propertyChainAxiom>
+               <ObjectProperty>
+                       <inverseOf>
+                               <resource name="ore:proxyIn"/>
+                       </inverseOf>
+               </ObjectProperty>
+               <resource name="ore:proxyFor"/>
+       </propertyChainAxiom>
+       <domain>
+               <resource name="ore:Aggregation"/>
+       </domain>
+       <range>
+               <resource name="ore:AggregatedResource"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/ore¦isAggregatedBy b/data/object_properties/ore¦isAggregatedBy
new file mode 100644 (file)
index 0000000..9d2ca32
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">aggregated by</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which includes this <ref target="ore:AggregatedResource">Aggregated Resource</ref> as a member.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-is-aggregated-by"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:isPartOf"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="ore:aggregates"/>
+       </inverseOf>
+       <propertyChainAxiom>
+               <ObjectProperty>
+                       <inverseOf>
+                               <resource name="ore:proxyFor"/>
+                       </inverseOf>
+               </ObjectProperty>
+               <resource name="ore:proxyIn"/>
+       </propertyChainAxiom>
+       <domain>
+               <resource name="ore:AggregatedResource"/>
+       </domain>
+       <range>
+               <resource name="ore:Aggregation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/ore¦lineage b/data/object_properties/ore¦lineage
new file mode 100644 (file)
index 0000000..8d12cc3
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">lineage</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="ore:Proxy">Proxy</ref> representing an <ref target="ore:aggregates">aggregation</ref> of an <ref target="ore:AggregatedResource">Aggregated Resource</ref> in an <ref target="ore:Aggregation">Aggregation</ref> which served as a source for the aggregation that this Proxy represents.
+               </p>
+               <p>
+                       When an Aggregated Resource in one Aggregation is due to its inclusion as an Aggregated Resource in a different Aggregation, this property, alongside Proxies which represent the Aggregated Resource in each case, can be used to demonstrate the relationship.
+                       The modelling for this is probably a bit soft and needlessly confusing; a relationship between the Aggregation itself and the Proxies that it was derived from might be clearer.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-lineage"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="ore:Proxy"/>
+       </domain>
+       <range>
+               <resource name="ore:Proxy"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/ore¦proxyFor b/data/object_properties/ore¦proxyFor
new file mode 100644 (file)
index 0000000..2ed3a4d
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" irreflexive="yes">
+       <label xml:lang="en">proxy for</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="ore:AggregatedResource">Aggregated Resource</ref> which this <ref target="ore:Proxy">Proxy</ref> is proxying.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-proxyFor"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="anno:hasSource"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="ore:Proxy"/>
+       </domain>
+       <range>
+               <resource name="ore:AggregatedResource"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/ore¦proxyIn b/data/object_properties/ore¦proxyIn
new file mode 100644 (file)
index 0000000..feafc1f
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">proxy in</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="ore:Aggregation">Aggregation</ref> which provides the context for this <ref target="ore:Proxy">Proxy</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OAI-ORE)" fragment="ore-proxyIn"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="in"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="ore:Proxy"/>
+       </domain>
+       <range>
+               <resource name="ore:Aggregation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦hasFile b/data/object_properties/pcdm¦hasFile
new file mode 100644 (file)
index 0000000..6e9ae35
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has file</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="pcdm:File">File</ref> which comprises part of this <ref target="pcdm:Object">Object</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:aggregates"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="pcdm:Object"/>
+       </domain>
+       <range>
+               <resource name="pcdm:File"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦hasMember b/data/object_properties/pcdm¦hasMember
new file mode 100644 (file)
index 0000000..0f3b7d3
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has member</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which forms a component part of this Aggregation.
+               </p>
+               <p>
+                       <ptr target="(PCDM)"/> describes this property only in terms of <ref target="pcdm:Object">Objects</ref> and <ref target="pcdm:Collection">Collections</ref>, but formally defines its domain and range as Aggregations.
+                       While this might have only been a modelling convenience, this ontology preserves the broader definition, to allow the use of this term without needing a firm stance on whether something is (or isn¦t) an Object or Collection as <ptr target="(PCDM)"/> would have it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:aggregates"/>
+       </subPropertyOf>
+       <range>
+               <resource name="ore:Aggregation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦hasRelatedObject b/data/object_properties/pcdm¦hasRelatedObject
new file mode 100644 (file)
index 0000000..c522bb7
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty asymmetric="yes" irreflexive="yes">
+       <label xml:lang="en">has related object</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="pcdm:Object">Object</ref> which is aggregated as part of this <ref target="ore:Aggregation">Aggregation</ref>, but which is not considered a component part.
+               </p>
+               <p>
+                       This property is intended for things like licensing agreements or cover art which are considered part of an Aggregation from the perspective of resource aggregation, but not from the perspective of conceptual composition.
+                       Related objects are <ref target="ore:aggregates">aggregated in</ref> and consequently <ref target="dcterms:isPartOf">part of</ref> the things they are related to, but as something other than a compositional component.
+                       For more general kinds of relation, use <ptr target="sioc:related_to"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:aggregates"/>
+       </subPropertyOf>
+       <propertyDisjointWith>
+               <resource name="pcdm:hasMember"/>
+       </propertyDisjointWith>
+       <range>
+               <resource name="pcdm:Object"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦isFileOf b/data/object_properties/pcdm¦isFileOf
new file mode 100644 (file)
index 0000000..f5b4eaa
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">file of</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="pcdm:Object">Object</ref> which this <ref target="pcdm:File">File</ref> comprises part of.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:isAggregatedBy"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="pcdm:hasFile"/>
+       </inverseOf>
+       <domain>
+               <resource name="pcdm:File"/>
+       </domain>
+       <range>
+               <resource name="pcdm:Object"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦isMemberOf b/data/object_properties/pcdm¦isMemberOf
new file mode 100644 (file)
index 0000000..dc1514b
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">member of</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which this Aggregation is a component part of.
+               </p>
+               <p>
+                       <ptr target="(PCDM)"/> describes this property only in terms of <ref target="pcdm:Object">Objects</ref> and <ref target="pcdm:Collection">Collections</ref>, but formally defines its domain and range as Aggregations.
+                       While this might have only been a modelling convenience, this ontology preserves the broader definition, to allow the use of this term without needing a firm stance on whether something is (or isn¦t) an Object or Collection as <ptr target="(PCDM)"/> would have it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:isAggregatedBy"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="pcdm:hasMember"/>
+       </inverseOf>
+       <domain>
+               <resource name="ore:Aggregation"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/pcdm¦isRelatedObjectOf b/data/object_properties/pcdm¦isRelatedObjectOf
new file mode 100644 (file)
index 0000000..c6f80b2
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty asymmetric="yes" irreflexive="yes">
+       <label xml:lang="en">related object of</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="ore:Aggregation">Aggregation</ref> which this <ref target="pcdm:Object">Object</ref> is aggregated as part of, but in a way which does not imply being a component part.
+               </p>
+               <p>
+                       See <ptr target="pcdm:hasRelatedObject"/> for further discussion on the correct usage of this property.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(PCDM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="ore:isAggregatedBy"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="pcdm:hasRelatedObject"/>
+       </inverseOf>
+       <propertyDisjointWith>
+               <resource name="pcdm:isMemberOf"/>
+       </propertyDisjointWith>
+       <domain>
+               <resource name="pcdm:Object"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦current b/data/object_properties/rel¦current
new file mode 100644 (file)
index 0000000..bf2bde0
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has current</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing containing the most recent entries in the feed to which this thing also belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦first b/data/object_properties/rel¦first
new file mode 100644 (file)
index 0000000..e807d75
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has first</label>
+       <comment xml:lang="en">
+               <p>
+                       A first thing in a series of things to which this thing belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦last b/data/object_properties/rel¦last
new file mode 100644 (file)
index 0000000..ad8588c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has last</label>
+       <comment xml:lang="en">
+               <p>
+                       A last thing in a series of things to which this thing belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦next b/data/object_properties/rel¦next
new file mode 100644 (file)
index 0000000..ab98d31
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has next</label>
+       <comment xml:lang="en">
+               <p>
+                       A next thing in a series of things to which this thing belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦next-archive b/data/object_properties/rel¦next-archive
new file mode 100644 (file)
index 0000000..37d8cd3
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has next archive</label>
+       <comment xml:lang="en">
+               <p>
+                       An immediately following archive document to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦prev-archive b/data/object_properties/rel¦prev-archive
new file mode 100644 (file)
index 0000000..9a37501
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has previous archive</label>
+       <comment xml:lang="en">
+               <p>
+                       An immediately preceding archive document to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦previous b/data/object_properties/rel¦previous
new file mode 100644 (file)
index 0000000..2d0c094
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has previous</label>
+       <comment xml:lang="en">
+               <p>
+                       A previous thing in a series of things to which this thing belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC5005)"/>
+       </isDefinedBy>
+</ObjectProperty>
index ad67eac612b1be1ebbee84524e83fb53f50e37a9..ea3d6a14e2992defb7791a022ec020565a55351a 100644 (file)
@@ -5,7 +5,7 @@ SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 <ObjectProperty>
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 <ObjectProperty>
-       <label xml:lang="en">has email</label>
+       <label xml:lang="en">has e·mail</label>
        <comment xml:lang="en">
                <p>
                        An electronic mail address for this <ref target="contact:SocialEntity">Social Entity</ref>.
        <comment xml:lang="en">
                <p>
                        An electronic mail address for this <ref target="contact:SocialEntity">Social Entity</ref>.
index dd7a9b9ba04154f1991b79b84edf551f3a22b5dc..dd8b4729a9aff07fa42a71fc0dbfeaad90da151d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
@@ -22,6 +22,9 @@ SPDX-License-Identifier: CC0-1.0
        <subPropertyOf>
                <resource name="skos:semanticRelation"/>
        </subPropertyOf>
        <subPropertyOf>
                <resource name="skos:semanticRelation"/>
        </subPropertyOf>
+       <subPropertyOf>
+               <resource name="sioc:related_to"/>
+       </subPropertyOf>
        <propertyDisjointWith>
                <resource name="skos:broader"/>
        </propertyDisjointWith>
        <propertyDisjointWith>
                <resource name="skos:broader"/>
        </propertyDisjointWith>
index 980ec7b214a656e788fb3c8fdb35797394befba1..958c0e5d300d6b4d408251d0523a6ab7378bf905 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
 <?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: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
 SPDX-License-Identifier: CC0-1.0
 -->
 <!DOCTYPE ObjectProperty SYSTEM "../../DTD">
@@ -15,7 +15,7 @@ SPDX-License-Identifier: CC0-1.0
                <SpecificResource source="(SKOS)" fragment="semanticRelation"/>
        </isDefinedBy>
        <subPropertyOf>
                <SpecificResource source="(SKOS)" fragment="semanticRelation"/>
        </isDefinedBy>
        <subPropertyOf>
-               <resource name="skos:semanticRelation"/>
+               <resource name="dcterms:relation"/>
        </subPropertyOf>
        <domain>
                <resource name="skos:Concept"/>
        </subPropertyOf>
        <domain>
                <resource name="skos:Concept"/>
diff --git a/data/object_properties/¦hasSlot b/data/object_properties/¦hasSlot
new file mode 100644 (file)
index 0000000..0cf4f11
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes" status="testing">
+       <label xml:lang="en">has slot</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="Slot">Slot</ref> in this <ref target="ore:Aggregation">Aggregation</ref>.
+               </p>
+       </comment>
+       <subPropertyOf>
+               <ObjectProperty>
+                       <inverseOf>
+                               <resource name="ore:proxyIn"/>
+                       </inverseOf>
+               </ObjectProperty>
+       </subPropertyOf>
+       <domain>
+               <resource name="ore:Aggregation"/>
+       </domain>
+       <range>
+               <resource name="Slot"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/¦in b/data/object_properties/¦in
new file mode 100644 (file)
index 0000000..99e40f5
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" irreflexive="yes" status="testing">
+       <label xml:lang="en">has local context</label>
+       <comment xml:lang="en">
+               <p>
+                       The local context for this thing, in terms of which its properties should be considered.
+               </p>
+               <p>
+                       If a thing does not have an inherent local context, local contexts (and associated properties) may be added thru the use of <ref target="Proxy">Proxies</ref>.
+               </p>
+       </comment>
+</ObjectProperty>
diff --git a/data/object_properties/¦inSlot b/data/object_properties/¦inSlot
new file mode 100644 (file)
index 0000000..1a5bcdb
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes" irreflexive="yes" status="testing">
+       <label xml:lang="en">in slot</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="Slot">Slot</ref> that is <ref target="ore:proxyFor">proxy for</ref> this thing.
+               </p>
+       </comment>
+       <subPropertyOf>
+               <ObjectProperty>
+                       <inverseOf>
+                               <resource name="ore:proxyFor"/>
+                       </inverseOf>
+               </ObjectProperty>
+       </subPropertyOf>
+       <range>
+               <resource name="Slot"/>
+       </range>
+</ObjectProperty>
index 034b83b5e17e0893c69b1a01fa55e92e2f74de98..680b0e9deaf293da51fb8a6b8de340f4599cb2f5 100644 (file)
@@ -77,10 +77,30 @@ SPDX-License-Identifier: CC0-1.0
                <prefix>ladys</prefix>
                <namespace>https://vocab.ladys.computer/terms/</namespace>
        </declare>
                <prefix>ladys</prefix>
                <namespace>https://vocab.ladys.computer/terms/</namespace>
        </declare>
+       <declare>
+               <prefix>olo</prefix>
+               <namespace>http://purl.org/ontology/olo/core#</namespace>
+       </declare>
+       <declare>
+               <prefix>ore</prefix>
+               <namespace>http://www.openarchives.org/ore/terms/</namespace>
+       </declare>
        <declare>
                <prefix>owl</prefix>
                <namespace>http://www.w3.org/2002/07/owl#</namespace>
        </declare>
        <declare>
                <prefix>owl</prefix>
                <namespace>http://www.w3.org/2002/07/owl#</namespace>
        </declare>
+       <declare>
+               <prefix>pcdm</prefix>
+               <namespace>http://pcdm.org/models#</namespace>
+       </declare>
+       <declare>
+               <prefix>pcdmuse</prefix>
+               <namespace>http://pcdm.org/use#</namespace>
+       </declare>
+       <declare>
+               <prefix>pcdmworks</prefix>
+               <namespace>http://pcdm.org/works#</namespace>
+       </declare>
        <declare>
                <prefix>rdf</prefix>
                <namespace>http://www.w3.org/1999/02/22-rdf-syntax-ns#</namespace>
        <declare>
                <prefix>rdf</prefix>
                <namespace>http://www.w3.org/1999/02/22-rdf-syntax-ns#</namespace>
index bd5d7b729566a9af581ba2c6a62ea22cc7e0bda5..dce85eb1e83954e0c45f412c083122ca95953442 100644 (file)
@@ -335,6 +335,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                </call-template>
                                                        </variable>
                                                        <if test="$prefixed!='xsd:string'">
                                                                </call-template>
                                                        </variable>
                                                        <if test="$prefixed!='xsd:string'">
+                                                               <text>^^</text>
                                                                <choose>
                                                                        <when test="contains($prefixed, '/') or contains(substring-after($prefixed, ':'), ':')">
                                                                                <text>&lt;</text>
                                                                <choose>
                                                                        <when test="contains($prefixed, '/') or contains(substring-after($prefixed, ':'), ':')">
                                                                                <text>&lt;</text>
@@ -371,7 +372,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                <when test="contains(' superClassOf ', $spaced)">
                                        <text>Vocabvocab:</text>
                                </when>
                                <when test="contains(' superClassOf ', $spaced)">
                                        <text>Vocabvocab:</text>
                                </when>
-                               <when test="contains(' code em p strong ', $spaced)">
+                               <when test="contains(' code em p strong var ', $spaced)">
                                        <text>html:</text>
                                </when>
                                <when test="contains(' AllDifferent AllDisjointClasses AllDisjointProperties AnnotationProperty Class DatatypeProperty NamedIndividual NegativeObjectPropertyAssertion ObjectProperty Ontology Restriction allValuesFrom assertionProperty cardinality complementOf datatypeComplementOf differentFrom disjointUnionOf disjointWith equivalentClass equivalentProperty hasKey hasSelf hasValue intersectionOf inverseOf maxCardinality maxQualifiedCardinality members minCardinality minQualifiedCardinality onClass onDataRange onDatatype onProperty oneOf propertyChainAxiom propertyDisjointWith qualifiedCardinality sameAs someValuesFrom sourceIndividual targetIndividual unionOf withRestrictions ', $spaced)">
                                        <text>html:</text>
                                </when>
                                <when test="contains(' AllDifferent AllDisjointClasses AllDisjointProperties AnnotationProperty Class DatatypeProperty NamedIndividual NegativeObjectPropertyAssertion ObjectProperty Ontology Restriction allValuesFrom assertionProperty cardinality complementOf datatypeComplementOf differentFrom disjointUnionOf disjointWith equivalentClass equivalentProperty hasKey hasSelf hasValue intersectionOf inverseOf maxCardinality maxQualifiedCardinality members minCardinality minQualifiedCardinality onClass onDataRange onDatatype onProperty oneOf propertyChainAxiom propertyDisjointWith qualifiedCardinality sameAs someValuesFrom sourceIndividual targetIndividual unionOf withRestrictions ', $spaced)">
@@ -386,7 +387,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                <when test="contains(' declare namespace prefix ', $spaced)">
                                        <text>shacl:</text>
                                </when>
                                <when test="contains(' declare namespace prefix ', $spaced)">
                                        <text>shacl:</text>
                                </when>
-                               <when test="contains(' inScheme ', $spaced)">
+                               <when test="contains(' broader inScheme narrower ', $spaced)">
                                        <text>skos:</text>
                                </when>
                                <otherwise>
                                        <text>skos:</text>
                                </when>
                                <otherwise>
@@ -499,8 +500,8 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                                                        <text>http://www.w3.org/2001/XMLSchema#string</text>
                                                                                                </when>
                                                                                                <otherwise>
                                                                                                        <text>http://www.w3.org/2001/XMLSchema#string</text>
                                                                                                </when>
                                                                                                <otherwise>
-                                                                                                       <call-template name="unprefix">
-                                                                                                               <with-param name="prefixed" select="@datatype"/>
+                                                                                                       <call-template name="Vocab:unprefix">
+                                                                                                               <with-param name="prefixed" select="string(@datatype)"/>
                                                                                                        </call-template>
                                                                                                </otherwise>
                                                                                        </choose>
                                                                                                        </call-template>
                                                                                                </otherwise>
                                                                                        </choose>
diff --git a/scripts/serve.rb b/scripts/serve.rb
new file mode 100755 (executable)
index 0000000..cf3b14a
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/ruby
+# SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: CC0-1.0
+
+require "webrick"
+
+server = WEBrick::HTTPServer.new(Port: ARGV[0] || 3000, DocumentRoot: "public", DirectoryIndex: ["index.xhtml"])
+trap 'INT' do server.shutdown end
+
+class XHTMLHandler < WEBrick::HTTPServlet::DefaultFileHandler
+  def do_GET request, response
+    super
+    response['Content-Type'] = 'application/xhtml+xml'
+  end
+end
+WEBrick::HTTPServlet::FileHandler.add_handler("xhtml", XHTMLHandler)
+
+server.start
index f572d607b32a2091b7f4c2756fc5942338c72cfb..33fb41247d3d5b4b22e1de9ff2f0d99f75c7958c 100644 (file)
@@ -42,4 +42,5 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        <template match="/rdf:RDF//text()[not(ancestor::html:*) and normalize-space()!='']" mode="书社:finalize" priority="10">
                <value-of select="normalize-space()"/>
        </template>
        <template match="/rdf:RDF//text()[not(ancestor::html:*) and normalize-space()!='']" mode="书社:finalize" priority="10">
                <value-of select="normalize-space()"/>
        </template>
+       <template match="comment()[contains(., '&#xA;SPDX-License-Identifier:')]"/>
 </transform>
 </transform>
index 056e57a7d8b0b4d8ec52dfc1da5c5f0787f1bcb7..9d12e2151ec5a5bac3201b27822ad4e8874ca267 100644 (file)
@@ -30,6 +30,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
        <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: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-class-union" match="owl:Class" use="owl:disjointUnionOf/rdf:Description/@rdf:about"/>
        <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"/>
        <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"/>
@@ -92,16 +93,29 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                        <with-param name="source" select="$source"/>
                                                                </apply-templates>
                                                        </for-each>
                                                                        <with-param name="source" select="$source"/>
                                                                </apply-templates>
                                                        </for-each>
-                                                       <for-each select="key($relationship-key, $source)">
+                                                       <for-each select="key($relationship-key, $source)[@rdf:about]">
                                                                <apply-templates select="." mode="Vocab:format-get">
                                                                        <with-param name="source" select="string(@rdf:about)"/>
                                                                </apply-templates>
                                                        </for-each>
                                                                <apply-templates select="." mode="Vocab:format-get">
                                                                        <with-param name="source" select="string(@rdf:about)"/>
                                                                </apply-templates>
                                                        </for-each>
+                                                       <if test="$relationship-names/Vocab:in-union">
+                                                               <for-each select="key(concat($relationship-key, '-union'), $source)">
+                                                                       <apply-templates select="*[local-name()=$relationship-names/Vocab:in-union/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:in-union/Vocab:namespace]/*" mode="Vocab:format-get">
+                                                                               <with-param name="source" select="string(@rdf:about)"/>
+                                                                       </apply-templates>
+                                                               </for-each>
+                                                       </if>
                                                </for-each>
                                        </for-each>
                                </variable>
                                                </for-each>
                                        </for-each>
                                </variable>
+                               <variable name="filter-fragment">
+                                       <copy-of select="$exclude"/>
+                                       <if test="not($include-self)">
+                                               <copy-of select="$equivalents"/>
+                                       </if>
+                               </variable>
                                <for-each select="exsl:node-set($unfiltered-result-fragment)/*">
                                <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)])]"/>
+                                       <copy-of select="self::*[not(@rdf:about and (exsl:node-set($filter-fragment)/*|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])]"/>
                                </for-each>
                        </if>
                </variable>
                                </for-each>
                        </if>
                </variable>
@@ -152,6 +166,16 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                        </otherwise>
                                </choose>
                        </element>
                                        </otherwise>
                                </choose>
                        </element>
+                       <if test="$relationship='disjoint' and $kind='class'">
+                               <element name="Vocab:in-union">
+                                       <element name="Vocab:local-name">
+                                               <text>disjointUnionOf</text>
+                                       </element>
+                                       <element name="Vocab:namespace">
+                                               <text>http://www.w3.org/2002/07/owl#</text>
+                                       </element>
+                               </element>
+                       </if>
                </variable>
                <exslfunc:result select="exsl:node-set($result-fragment)"/>
        </exslfunc:function>
                </variable>
                <exslfunc:result select="exsl:node-set($result-fragment)"/>
        </exslfunc:function>
@@ -175,7 +199,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                                <with-param name="source" select="$source"/>
                                                        </apply-templates>
                                                </for-each>
                                                                <with-param name="source" select="$source"/>
                                                        </apply-templates>
                                                </for-each>
-                                               <for-each select="key(concat('Vocab:equivalent-', $kind), $source)">
+                                               <for-each select="key(concat('Vocab:equivalent-', $kind), $source)[@rdf:about]">
                                                        <apply-templates select="." mode="Vocab:format-get">
                                                                <with-param name="source" select="string(@rdf:about)"/>
                                                        </apply-templates>
                                                        <apply-templates select="." mode="Vocab:format-get">
                                                                <with-param name="source" select="string(@rdf:about)"/>
                                                        </apply-templates>
@@ -276,6 +300,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                </element>
                        </when>
                        <otherwise>
                                </element>
                        </when>
                        <otherwise>
+                               <!-- assume this is a property (like `owl:inverseOf´), not an instance (like `owl:ObjectProperty´); in this case, the members are what is desired -->
                                <for-each select="*">
                                        <copy>
                                                <copy-of select="@*|node()"/>
                                <for-each select="*">
                                        <copy>
                                                <copy-of select="@*|node()"/>
index bace54455e84535b60466e4212d0988fdb1c410c..5b2cc940ad74f903c845fbd0628979f111eef1ac 100644 (file)
@@ -65,12 +65,12 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                </apply-templates>
                                <text>}</text>
                        </when>
                                </apply-templates>
                                <text>}</text>
                        </when>
-                       <when test="owl:complementOf">
+                       <when test="owl:datatypeComplementOf">
                                <if test="$use-parens">
                                        <text>(</text>
                                </if>
                                <text>not </text>
                                <if test="$use-parens">
                                        <text>(</text>
                                </if>
                                <text>not </text>
-                               <apply-templates select="(owl:complimentOf/@rdf:resource|owl:complimentOf/*)[1]" mode="Vocab:render-class">
+                               <apply-templates select="(owl:datatypeComplementOf/@rdf:resource|owl:datatypeComplementOf/*)[1]" mode="Vocab:render-class">
                                        <with-param name="root" select="$root"/>
                                        <with-param name="use-parens" select="true()"/>
                                </apply-templates>
                                        <with-param name="root" select="$root"/>
                                        <with-param name="use-parens" select="true()"/>
                                </apply-templates>
@@ -162,7 +162,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        <when test="owl:oneOf">
                                <text>{</text>
                                <for-each select="owl:oneOf/*">
                        <when test="owl:oneOf">
                                <text>{</text>
                                <for-each select="owl:oneOf/*">
-                                       <apply-templates select="." name="Vocab:render-individual">
+                                       <apply-templates select="." mode="Vocab:render-individual">
                                                <with-param name="root" select="$root"/>
                                                <with-param name="resource-context" select="$resource-context"/>
                                        </apply-templates>
                                                <with-param name="root" select="$root"/>
                                                <with-param name="resource-context" select="$resource-context"/>
                                        </apply-templates>
@@ -375,7 +375,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        </call-template>
                </for-each>
        </template>
                        </call-template>
                </for-each>
        </template>
-       <template match="*" mode="Vocab:render-class">
+       <template match="@*|node()" mode="Vocab:render-class">
                <text>??</text>
        </template>
        <template match="rdf:Description" mode="Vocab:render-individual">
                <text>??</text>
        </template>
        <template match="rdf:Description" mode="Vocab:render-individual">
@@ -432,7 +432,7 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        </call-template>
                </for-each>
        </template>
                        </call-template>
                </for-each>
        </template>
-       <template match="*" mode="Vocab:render-individual">
+       <template match="@*|node()" mode="Vocab:render-individual">
                <text>??</text>
        </template>
        <template match="owl:AnnotationProperty|owl:DatatypeProperty|rdf:Description" mode="Vocab:render-property">
                <text>??</text>
        </template>
        <template match="owl:AnnotationProperty|owl:DatatypeProperty|rdf:Description" mode="Vocab:render-property">
@@ -515,11 +515,12 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                        </call-template>
                </for-each>
        </template>
                        </call-template>
                </for-each>
        </template>
-       <template match="*" mode="Vocab:render-property">
+       <template match="@*|node()" mode="Vocab:render-property">
                <text>??</text>
        </template>
                <text>??</text>
        </template>
-       <template match="*" mode="Vocab:render-value">
+       <template match="@*|node()" mode="Vocab:render-value">
                <param name="root" select="/"/>
                <param name="root" select="/"/>
+               <variable name="datatype" select="@rdf:datatype"/>
                <element name="code" namespace="&xhtml;">
                        <text>&quot;</text>
                        <element name="span" namespace="&xhtml;">
                <element name="code" namespace="&xhtml;">
                        <text>&quot;</text>
                        <element name="span" namespace="&xhtml;">
@@ -539,11 +540,11 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                        <text>@</text>
                                        <value-of select="@xml:lang"/>
                                </when>
                                        <text>@</text>
                                        <value-of select="@xml:lang"/>
                                </when>
-                               <when test="@rdf:datatype and string(@rdf:datatype)!='http://www.w3.org/2001/XMLSchema#string'">
+                               <when test="$datatype and string($datatype)!='http://www.w3.org/2001/XMLSchema#string'">
                                        <text>^^</text>
                                        <text>^^</text>
-                                       <for-each select="/">
+                                       <for-each select="$root">
                                                <call-template name="Vocab:link-to">
                                                <call-template name="Vocab:link-to">
-                                                       <with-param name="resource" select="@rdf:datatype"/>
+                                                       <with-param name="resource" select="string($datatype)"/>
                                                        <with-param name="kind" select="'class'"/>
                                                </call-template>
                                        </for-each>
                                                        <with-param name="kind" select="'class'"/>
                                                </call-template>
                                        </for-each>
index 43def78cd5e0a2a98f6bd427462ce6a2bf259a9e..796c55f7dc2edd531162b7012f1ef88ce1fd92ca 100644 (file)
@@ -257,150 +257,167 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                </copy>
        </template>
        <template match="html:article[rdf:RDF]">
                </copy>
        </template>
        <template match="html:article[rdf:RDF]">
-               <for-each select="rdf:RDF">
-                       <for-each select="//owl:Ontology[1]">
-                               <element name="hgroup" namespace="&xhtml;">
-                                       <element name="h1" namespace="&xhtml;">
+               <copy>
+                       <copy-of select="@*"/>
+                       <for-each select="rdf:RDF">
+                               <for-each select="//owl:Ontology[1]">
+                                       <element name="meta" namespace="&xhtml;">
+                                               <attribute name="itemprop">
+                                                       <text>urn:fdc:ladys.computer:20231231:Shu1She4:title</text>
+                                               </attribute>
                                                <attribute name="lang">
                                                        <value-of select="rdfs:label[1]/@xml:lang"/>
                                                </attribute>
                                                <attribute name="xml:lang">
                                                        <value-of select="rdfs:label[1]/@xml:lang"/>
                                                </attribute>
                                                <attribute name="lang">
                                                        <value-of select="rdfs:label[1]/@xml:lang"/>
                                                </attribute>
                                                <attribute name="xml:lang">
                                                        <value-of select="rdfs:label[1]/@xml:lang"/>
                                                </attribute>
-                                               <value-of select="rdfs:label[1]"/>
+                                               <attribute name="content">
+                                                       <value-of select="//owl:Ontology[1]/rdfs:label[1]"/>
+                                               </attribute>
                                        </element>
                                        </element>
-                                       <element name="p" namespace="&xhtml;">
-                                               &en;
-                                               <text>An ontology.</text>
+                                       <element name="hgroup" namespace="&xhtml;">
+                                               <element name="h1" namespace="&xhtml;">
+                                                       <attribute name="lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <attribute name="xml:lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <value-of select="rdfs:label[1]"/>
+                                               </element>
+                                               <element name="p" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>An ontology.</text>
+                                               </element>
                                        </element>
                                        </element>
-                               </element>
-                               <element name="div" namespace="&xhtml;">
-                                       <attribute name="class">
-                                               <text>owl</text>
-                                       </attribute>
-                                       <element name="dl" namespace="&xhtml;">
-                                               <element name="div" namespace="&xhtml;">
-                                                       <element name="dt" namespace="&xhtml;">
-                                                               <element name="abbr" namespace="&xhtml;">
-                                                                       &en;
-                                                                       <attribute name="title">
-                                                                               <text>Internationalized Resource Identifier</text>
-                                                                       </attribute>
-                                                                       <text>I·R·I</text>
+                                       <element name="div" namespace="&xhtml;">
+                                               <attribute name="class">
+                                                       <text>owl</text>
+                                               </attribute>
+                                               <element name="dl" namespace="&xhtml;">
+                                                       <element name="div" namespace="&xhtml;">
+                                                               <element name="dt" namespace="&xhtml;">
+                                                                       <element name="abbr" namespace="&xhtml;">
+                                                                               &en;
+                                                                               <attribute name="title">
+                                                                                       <text>Internationalized Resource Identifier</text>
+                                                                               </attribute>
+                                                                               <text>I·R·I</text>
+                                                                       </element>
                                                                </element>
                                                                </element>
-                                                       </element>
-                                                       <element name="dd" namespace="&xhtml;">
-                                                               <element name="a" namespace="&xhtml;">
-                                                                       <attribute name="href">
-                                                                               <value-of select="@rdf:about"/>
-                                                                       </attribute>
-                                                                       <element name="code" namespace="&xhtml;">
-                                                                               <value-of select="@rdf:about"/>
+                                                               <element name="dd" namespace="&xhtml;">
+                                                                       <element name="a" namespace="&xhtml;">
+                                                                               <attribute name="href">
+                                                                                       <value-of select="@rdf:about"/>
+                                                                               </attribute>
+                                                                               <element name="code" namespace="&xhtml;">
+                                                                                       <value-of select="@rdf:about"/>
+                                                                               </element>
                                                                        </element>
                                                                </element>
                                                        </element>
                                                </element>
                                        </element>
                                                                        </element>
                                                                </element>
                                                        </element>
                                                </element>
                                        </element>
-                               </element>
-                               <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
-                               <element name="section" namespace="&xhtml;">
-                                       <element name="h2" namespace="&xhtml;">
-                                               &en;
-                                               <text>List of Name·spaces</text>
-                                       </element>
-                                       <element name="table" namespace="&xhtml;">
-                                               <element name="thead" namespace="&xhtml;">
-                                                       <element name="tr" namespace="&xhtml;">
-                                                               <element name="th" namespace="&xhtml;">
-                                                                       &en;
-                                                                       <attribute name="scope">
-                                                                               <text>col</text>
-                                                                       </attribute>
-                                                                       Prefix
-                                                               </element>
-                                                               <element name="th" namespace="&xhtml;">
-                                                                       &en;
-                                                                       <attribute name="scope">
-                                                                               <text>col</text>
-                                                                       </attribute>
-                                                                       Name·space I·R·I
-                                                               </element>
-                                                       </element>
+                                       <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
+                                       <element name="section" namespace="&xhtml;">
+                                               <element name="h2" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>List of Name·spaces</text>
                                                </element>
                                                </element>
-                                               <element name="tbody" namespace="&xhtml;">
-                                                       <for-each select="shacl:declare[shacl:prefix!='']">
-                                                               <sort select="shacl:prefix"/>
+                                               <element name="table" namespace="&xhtml;">
+                                                       <element name="thead" namespace="&xhtml;">
                                                                <element name="tr" namespace="&xhtml;">
                                                                        <element name="th" namespace="&xhtml;">
                                                                <element name="tr" namespace="&xhtml;">
                                                                        <element name="th" namespace="&xhtml;">
+                                                                               &en;
                                                                                <attribute name="scope">
                                                                                <attribute name="scope">
-                                                                                       <text>row</text>
+                                                                                       <text>col</text>
                                                                                </attribute>
                                                                                </attribute>
-                                                                               <element name="code" namespace="&xhtml;">
-                                                                                       <value-of select="shacl:prefix"/>
-                                                                                       <text>:</text>
-                                                                               </element>
+                                                                               Prefix
                                                                        </element>
                                                                        </element>
-                                                                       <element name="td" namespace="&xhtml;">
-                                                                               <element name="code" namespace="&xhtml;">
-                                                                                       <value-of select="shacl:namespace"/>
-                                                                               </element>
+                                                                       <element name="th" namespace="&xhtml;">
+                                                                               &en;
+                                                                               <attribute name="scope">
+                                                                                       <text>col</text>
+                                                                               </attribute>
+                                                                               Name·space I·R·I
                                                                        </element>
                                                                </element>
                                                                        </element>
                                                                </element>
-                                                       </for-each>
+                                                       </element>
+                                                       <element name="tbody" namespace="&xhtml;">
+                                                               <for-each select="shacl:declare[shacl:prefix!='']">
+                                                                       <sort select="shacl:prefix"/>
+                                                                       <element name="tr" namespace="&xhtml;">
+                                                                               <element name="th" namespace="&xhtml;">
+                                                                                       <attribute name="scope">
+                                                                                               <text>row</text>
+                                                                                       </attribute>
+                                                                                       <element name="code" namespace="&xhtml;">
+                                                                                               <value-of select="shacl:prefix"/>
+                                                                                               <text>:</text>
+                                                                                       </element>
+                                                                               </element>
+                                                                               <element name="td" namespace="&xhtml;">
+                                                                                       <element name="code" namespace="&xhtml;">
+                                                                                               <value-of select="shacl:namespace"/>
+                                                                                       </element>
+                                                                               </element>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
                                                </element>
                                        </element>
                                                </element>
                                        </element>
-                               </element>
+                                       <element name="section" namespace="&xhtml;">
+                                               <element name="h2" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Terms Defined By </text>
+                                                       <element name="cite" namespace="&xhtml;">
+                                                               <attribute name="lang">
+                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                               </attribute>
+                                                               <attribute name="xml:lang">
+                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                               </attribute>
+                                                               <value-of select="rdfs:label[1]"/>
+                                                       </element>
+                                               </element>
+                                               <call-template name="Vocab:list-all-terms"/>
+                                       </element>
+                               </for-each>
                                <element name="section" namespace="&xhtml;">
                                        <element name="h2" namespace="&xhtml;">
                                                &en;
                                <element name="section" namespace="&xhtml;">
                                        <element name="h2" namespace="&xhtml;">
                                                &en;
-                                               <text>Terms Defined By </text>
-                                               <element name="cite" namespace="&xhtml;">
-                                                       <attribute name="lang">
-                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
-                                                       </attribute>
-                                                       <attribute name="xml:lang">
-                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
-                                                       </attribute>
-                                                       <value-of select="rdfs:label[1]"/>
-                                               </element>
+                                               <text>Terms Defined Else·where</text>
                                        </element>
                                        </element>
-                                       <call-template name="Vocab:list-all-terms"/>
-                               </element>
-                       </for-each>
-                       <element name="section" namespace="&xhtml;">
-                               <element name="h2" namespace="&xhtml;">
-                                       &en;
-                                       <text>Terms Defined Else·where</text>
-                               </element>
-                               <for-each select="//owl:NamedIndividual">
-                                       <sort select="rdfs:label" lang="en"/>
-                                       <if test="(//rdfs:isDefinedBy|//rdfs:isDefinedBy/anno:ResourceSelection/anno:hasSource)[string(@rdf:resource)=string(current()/@rdf:about)]">
-                                               <element name="section" namespace="&xhtml;">
-                                                       <element name="h3" namespace="&xhtml;">
-                                                               <element name="a" namespace="&xhtml;">
-                                                                       <attribute name="href">
-                                                                               <value-of select="@rdf:about"/>
-                                                                       </attribute>
-                                                                       <element name="cite" namespace="&xhtml;">
-                                                                               <attribute name="lang">
-                                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
-                                                                               </attribute>
-                                                                               <attribute name="xml:lang">
-                                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                       <for-each select="//owl:NamedIndividual">
+                                               <sort select="rdfs:label" lang="en"/>
+                                               <if test="(//rdfs:isDefinedBy|//rdfs:isDefinedBy/anno:ResourceSelection/anno:hasSource)[string(@rdf:resource)=string(current()/@rdf:about)]">
+                                                       <element name="section" namespace="&xhtml;">
+                                                               <element name="h3" namespace="&xhtml;">
+                                                                       <element name="a" namespace="&xhtml;">
+                                                                               <attribute name="href">
+                                                                                       <value-of select="@rdf:about"/>
                                                                                </attribute>
                                                                                </attribute>
-                                                                               <value-of select="rdfs:label[1]"/>
+                                                                               <element name="cite" namespace="&xhtml;">
+                                                                                       <attribute name="lang">
+                                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                                       </attribute>
+                                                                                       <attribute name="xml:lang">
+                                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                                       </attribute>
+                                                                                       <value-of select="rdfs:label[1]"/>
+                                                                               </element>
                                                                        </element>
                                                                </element>
                                                                        </element>
                                                                </element>
+                                                               <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
+                                                               <call-template name="Vocab:list-all-terms">
+                                                                       <with-param name="source" select="@rdf:about"/>
+                                                               </call-template>
                                                        </element>
                                                        </element>
-                                                       <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
-                                                       <call-template name="Vocab:list-all-terms">
-                                                               <with-param name="source" select="@rdf:about"/>
-                                                       </call-template>
-                                               </element>
-                                       </if>
-                               </for-each>
-                       </element>
-               </for-each>
+                                               </if>
+                                       </for-each>
+                               </element>
+                       </for-each>
+               </copy>
        </template>
        <template match="*[@rdf:about and (self::owl:AnnotationProperty or self::owl:Class or self::owl:DatatypeProperty or self::owl:NamedIndividual or self::owl:ObjectProperty or self::rdfs:Datatype)]" mode="Vocab:render-term" priority="2">
                <variable name="root" select="/"/>
        </template>
        <template match="*[@rdf:about and (self::owl:AnnotationProperty or self::owl:Class or self::owl:DatatypeProperty or self::owl:NamedIndividual or self::owl:ObjectProperty or self::rdfs:Datatype)]" mode="Vocab:render-term" priority="2">
                <variable name="root" select="/"/>
@@ -750,6 +767,24 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                </choose>
                                        </element>
                                </if>
                                                </choose>
                                        </element>
                                </if>
+                               <if test="owl:disjointUnionOf">
+                                       <element name="div" namespace="&xhtml;">
+                                               <element name="dt" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Disjoint Union Of</text>
+                                               </element>
+                                               <for-each select="owl:disjointUnionOf">
+                                                       <element name="dd" namespace="&xhtml;">
+                                                               <for-each select="*">
+                                                                       <apply-templates select="." mode="Vocab:render-class"/>
+                                                                       <if test="position()&lt;last()">
+                                                                               <text>, </text>
+                                                                       </if>
+                                                               </for-each>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
                                <if test="$inverses">
                                        <choose>
                                                <when test="$kind='class'">
                                <if test="$inverses">
                                        <choose>
                                                <when test="$kind='class'">
@@ -884,32 +919,6 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                </for-each>
                                        </element>
                                </if>
                                                </for-each>
                                        </element>
                                </if>
-                               <if test="rdfs:domain">
-                                       <element name="div" namespace="&xhtml;">
-                                               <element name="dt" namespace="&xhtml;">
-                                                       &en;
-                                                       <text>Domain</text>
-                                               </element>
-                                               <for-each select="rdfs:domain">
-                                                       <element name="dd" namespace="&xhtml;">
-                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
-                                                       </element>
-                                               </for-each>
-                                       </element>
-                               </if>
-                               <if test="rdfs:range">
-                                       <element name="div" namespace="&xhtml;">
-                                               <element name="dt" namespace="&xhtml;">
-                                                       &en;
-                                                       <text>Range</text>
-                                               </element>
-                                               <for-each select="rdfs:range">
-                                                       <element name="dd" namespace="&xhtml;">
-                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
-                                                       </element>
-                                               </for-each>
-                                       </element>
-                               </if>
                                <if test="$disjoints">
                                        <choose>
                                                <when test="$kind='class'">
                                <if test="$disjoints">
                                        <choose>
                                                <when test="$kind='class'">
@@ -946,6 +955,32 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                </when>
                                        </choose>
                                </if>
                                                </when>
                                        </choose>
                                </if>
+                               <if test="rdfs:domain">
+                                       <element name="div" namespace="&xhtml;">
+                                               <element name="dt" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Domain</text>
+                                               </element>
+                                               <for-each select="rdfs:domain">
+                                                       <element name="dd" namespace="&xhtml;">
+                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="rdfs:range">
+                                       <element name="div" namespace="&xhtml;">
+                                               <element name="dt" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Range</text>
+                                               </element>
+                                               <for-each select="rdfs:range">
+                                                       <element name="dd" namespace="&xhtml;">
+                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
                                <if test="skos:inScheme">
                                        <element name="div" namespace="&xhtml;">
                                                <element name="dt" namespace="&xhtml;">
                                <if test="skos:inScheme">
                                        <element name="div" namespace="&xhtml;">
                                                <element name="dt" namespace="&xhtml;">
@@ -962,6 +997,38 @@ If a copy of the M·P·L was not distributed with this file, You can obtain one
                                                </for-each>
                                        </element>
                                </if>
                                                </for-each>
                                        </element>
                                </if>
+                               <if test="skos:broader">
+                                       <element name="div" namespace="&xhtml;">
+                                               <element name="dt" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Has Broader</text>
+                                               </element>
+                                               <for-each select="skos:broader">
+                                                       <element name="dd" namespace="&xhtml;">
+                                                               <call-template name="Vocab:link-to">
+                                                                       <with-param name="resource" select="string(@rdf:resource)"/>
+                                                                       <with-param name="kind" select="'individual'"/>
+                                                               </call-template>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="skos:narrower">
+                                       <element name="div" namespace="&xhtml;">
+                                               <element name="dt" namespace="&xhtml;">
+                                                       &en;
+                                                       <text>Has Narrower</text>
+                                               </element>
+                                               <for-each select="skos:narrower">
+                                                       <element name="dd" namespace="&xhtml;">
+                                                               <call-template name="Vocab:link-to">
+                                                                       <with-param name="resource" select="string(@rdf:resource)"/>
+                                                                       <with-param name="kind" select="'individual'"/>
+                                                               </call-template>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
                                <if test="rdfs:isDefinedBy[not(starts-with(@rdf:resource, $base-iri))]">
                                        <element name="div" namespace="&xhtml;">
                                                <element name="dt" namespace="&xhtml;">
                                <if test="rdfs:isDefinedBy[not(starts-with(@rdf:resource, $base-iri))]">
                                        <element name="div" namespace="&xhtml;">
                                                <element name="dt" namespace="&xhtml;">
This page took 0.582141 seconds and 4 git commands to generate.