ndw / xmlcalabash1-rdf

RDF steps for XML Calabash 1.x
Other
2 stars 1 forks source link

Order of RDF list items in sem:triples output #2

Open timathom opened 8 years ago

timathom commented 8 years ago

I'm using the extension step with RDF data that makes heavy use of RDF lists. The sem:triples output makes the rdf:first, rdf:rest, rdf:nil triples explicit. However, it seems to flip the order of the list items, so that rdf:rest precedes rdf:first (see example markup below).

There is no problem with the semantics here, but it does make the output a little harder to work with (my goal is to use XSLT or XQuery to convert directly from sem:triples into RDFa, and I want to avoid using RDF/XML for various reasons).

Turtle:

@prefix bf: <http://bibframe.org/vocab/> .
@prefix bf2: <http://bibframe.org/vocab2/> .
@prefix bfabstract: <http://bibframe.org/model-abstract/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix madsrdf: <http://www.loc.gov/mads/rdf/v1#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix relators: <http://id.loc.gov/vocabulary/relators/> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://bibframe.org/resources/Zjm1442425858/9169820topic14> a bf:Topic ;
    bf:authorizedAccessPoint "Europe--Civilization" ;
    bf:hasAuthority [ a madsrdf:Authority,
                madsrdf:ComplexSubject ;
            madsrdf:authoritativeLabel "Europe--Civilization--Philosophy--Periodicals" ;
            madsrdf:componentList ( [ a madsrdf:Authority,
                            madsrdf:Topic ;
                        madsrdf:authoritativeLabel "Europe" ;
                        madsrdf:elementList ( [ a madsrdf:TopicElement ;
                                    madsrdf:elementValue "Europe" ] ) ] [ a madsrdf:Authority,
                            madsrdf:Topic ;
                        madsrdf:authoritativeLabel "Civilization" ;
                        madsrdf:elementList ( [ a madsrdf:TopicElement ;
                                    madsrdf:elementValue "Civilization" ] ) ] [ a madsrdf:Authority,
                            madsrdf:Topic ;
                        madsrdf:authoritativeLabel "Philosophy" ;
                        madsrdf:elementList ( [ a madsrdf:TopicElement ;
                                    madsrdf:elementValue "Philosophy" ] ) ] [ a madsrdf:Authority,
                            madsrdf:GenreForm ;
                        madsrdf:authoritativeLabel "Periodicals" ;
                        madsrdf:elementList ( [ a madsrdf:GenreFormElement ;
                                    madsrdf:elementValue "Periodicals." ] ) ] ) ;
            madsrdf:isMemberOfMADSScheme <http://id.loc.gov/authorities/subjects> ] ;
    bf:label "Europe--Civilization--Philosophy--Periodicals" .

sem:triples:

<?xml version="1.0" encoding="UTF-8"?>
<sem:triples xmlns:sem="http://marklogic.com/semantics">
    <cx:database-uri xmlns:cx="http://xmlcalabash.com/ns/extensions">/triples/2af217964fcd9d9.xml</cx:database-uri>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/19c242e9422c084a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/19c242e9422c084a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/8f3f9b869fbd35f8</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/171542043222df4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/171542043222df4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/95065a2503a5c85b</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/84a234c0bab2df42</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementValue</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Civilization</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/84a234c0bab2df42</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#TopicElement</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/19e342eb522c294a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/1a2d42d7b22fe74a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/19e342eb522c294a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/37fa800ace033146</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/9a8fb52262ac8dc5</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementList</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/171542043222df4a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/9a8fb52262ac8dc5</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#authoritativeLabel</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Philosophy</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/9a8fb52262ac8dc5</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Topic</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/9a8fb52262ac8dc5</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Authority</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/173642060222fc4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/177042026222ba4a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/173642060222fc4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/9a8fb52262ac8dc5</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/b55357dfac84beab</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementValue</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Periodicals.</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/b55357dfac84beab</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#GenreFormElement</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1a0c42d5a22fc64a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1a0c42d5a22fc64a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/84a234c0bab2df42</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/95065a2503a5c85b</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementValue</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Philosophy</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/95065a2503a5c85b</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#TopicElement</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/cbe46034dfff6447</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementList</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/1757420012229d4a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/cbe46034dfff6447</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#authoritativeLabel</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Periodicals</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/cbe46034dfff6447</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#GenreForm</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/cbe46034dfff6447</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Authority</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1757420012229d4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1757420012229d4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/b55357dfac84beab</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://bibframe.org/resources/Zjm1442425858/9169820topic14</sem:subject>
        <sem:predicate>http://bibframe.org/vocab/label</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Europe--Civilization--Philosophy--Periodicals</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://bibframe.org/resources/Zjm1442425858/9169820topic14</sem:subject>
        <sem:predicate>http://bibframe.org/vocab/hasAuthority</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://bibframe.org/resources/Zjm1442425858/9169820topic14</sem:subject>
        <sem:predicate>http://bibframe.org/vocab/authorizedAccessPoint</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Europe--Civilization</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://bibframe.org/resources/Zjm1442425858/9169820topic14</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://bibframe.org/vocab/Topic</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/c419d0cb04f4ce2c</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementList</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/1a0c42d5a22fc64a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/c419d0cb04f4ce2c</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#authoritativeLabel</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Civilization</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/c419d0cb04f4ce2c</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Topic</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/c419d0cb04f4ce2c</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Authority</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1a2d42d7b22fe74a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/173642060222fc4a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/1a2d42d7b22fe74a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/c419d0cb04f4ce2c</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/177042026222ba4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#rest</sem:predicate>
        <sem:object>http://www.w3.org/1999/02/22-rdf-syntax-ns#nil</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/177042026222ba4a</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#first</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/cbe46034dfff6447</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#isMemberOfMADSScheme</sem:predicate>
        <sem:object>http://id.loc.gov/authorities/subjects</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#componentList</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/19e342eb522c294a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#authoritativeLabel</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Europe--Civilization--Philosophy--Periodicals</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#ComplexSubject</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/e77d22fd4bd5a28c</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Authority</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/37fa800ace033146</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementList</sem:predicate>
        <sem:object>http://marklogic.com/semantics/blank/19c242e9422c084a</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/37fa800ace033146</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#authoritativeLabel</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Europe</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/37fa800ace033146</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Topic</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/37fa800ace033146</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#Authority</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/8f3f9b869fbd35f8</sem:subject>
        <sem:predicate>http://www.loc.gov/mads/rdf/v1#elementValue</sem:predicate>
        <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">Europe</sem:object>
    </sem:triple>
    <sem:triple>
        <sem:subject>http://marklogic.com/semantics/blank/8f3f9b869fbd35f8</sem:subject>
        <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</sem:predicate>
        <sem:object>http://www.loc.gov/mads/rdf/v1#TopicElement</sem:object>
    </sem:triple>
</sem:triples>
timathom commented 8 years ago

Sorry, never mind, I think. Should be easy enough to just pre-sort the sem:triples before transformation.