Skip to content
Snippets Groups Projects
Commit 209a70a9 authored by Christian Boulanger's avatar Christian Boulanger
Browse files

convert TEI XML to JSON

parent 8985e985
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id:4c77ab592c98dfd tags: %% Cell type:markdown id:4c77ab592c98dfd tags:
# Conversion to TEI (`<bibl>`) # Conversion to TEI (`<bibl>`)
References: References:
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBI (Overview) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBI (Overview)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBIOT (Mapping to other bibliographic formats) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBIOT (Mapping to other bibliographic formats)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-bibl.html (`<bibl>`) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-bibl.html (`<bibl>`)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-biblStruct.html (`biblStruct`) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-biblStruct.html (`biblStruct`)
- https://epidoc.stoa.org/gl/latest/supp-bibliography.html (Examples) - https://epidoc.stoa.org/gl/latest/supp-bibliography.html (Examples)
- https://quod.lib.umich.edu/cgi/t/tei/tei-idx?type=HTML&rgn=DIV2&byte=647051 - https://quod.lib.umich.edu/cgi/t/tei/tei-idx?type=HTML&rgn=DIV2&byte=647051
- https://grobid.readthedocs.io/en/latest/training/Bibliographical-references/ (Grobid examples using `<bibl>`) - https://grobid.readthedocs.io/en/latest/training/Bibliographical-references/ (Grobid examples using `<bibl>`)
We use `<bibl>` here instead of `<biblStruct>` because it is more loosely-structured and allows for a more flat datastructure. We use `<bibl>` here instead of `<biblStruct>` because it is more loosely-structured and allows for a more flat datastructure.
## Collect metadata on TEI `<bibl>` tags ## Collect metadata on TEI `<bibl>` tags
%% Cell type:code id:ff140f40df428a8f tags: %% Cell type:code id:ff140f40df428a8f tags:
``` python ``` python
import xmlschema import xmlschema
import os import os
# cache for local use # cache for local use
if not os.path.isdir("schema/tei"): if not os.path.isdir("schema/tei"):
schema = xmlschema.XMLSchema("https://www.tei-c.org/release/xml/tei/custom/schema/xsd/tei_all.xsd") schema = xmlschema.XMLSchema("https://www.tei-c.org/release/xml/tei/custom/schema/xsd/tei_all.xsd")
schema.export(target='schema/tei', save_remote=True) schema.export(target='schema/tei', save_remote=True)
``` ```
%% Cell type:code id:572f566fc9784238 tags: %% Cell type:code id:572f566fc9784238 tags:
``` python ``` python
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import pandas as pd import pandas as pd
import requests import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import re import re
from tqdm.notebook import tqdm from tqdm.notebook import tqdm
# written by GPT-4 # written by GPT-4
def extract_headings_and_links(tag, doc_heading, doc_base_url): def extract_headings_and_links(tag, doc_heading, doc_base_url):
# Extract heading numbers from the document # Extract heading numbers from the document
heading_numbers = re.findall(r'\d+(?:\.\d+)*', doc_heading) heading_numbers = re.findall(r'\d+(?:\.\d+)*', doc_heading)
# Download the HTML page # Download the HTML page
url = f"{doc_base_url}/ref-{tag}.html" url = f"{doc_base_url}/ref-{tag}.html"
response = requests.get(url) response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser') soup = BeautifulSoup(response.content, 'html.parser')
# Extract the links associated with each heading number # Extract the links associated with each heading number
links = {} links = {}
for link in soup.find_all('a', class_='link_ptr'): for link in soup.find_all('a', class_='link_ptr'):
heading_value = link.find('span', class_='headingNumber').text.strip() heading_value = link.find('span', class_='headingNumber').text.strip()
link_url = link.get('href') link_url = link.get('href')
links[heading_value] = f"{doc_base_url}/{link_url}" links[heading_value] = f"{doc_base_url}/{link_url}"
return {heading: link_url for heading, link_url in zip(heading_numbers, links.values()) if return {heading: link_url for heading, link_url in zip(heading_numbers, links.values()) if
heading in heading_numbers} heading in heading_numbers}
def generate_tag_docs(xsd_path): def generate_tag_docs(xsd_path):
namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'} namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'}
doc_base_url = "https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html" doc_base_url = "https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html"
tree = ET.parse('schema/tei/tei_all.xsd') tree = ET.parse('schema/tei/tei_all.xsd')
root = tree.getroot() root = tree.getroot()
schema = xmlschema.XMLSchema(xsd_path) schema = xmlschema.XMLSchema(xsd_path)
bibl_schema = schema.find("tei:bibl") bibl_schema = schema.find("tei:bibl")
data_list = [] data_list = []
#names = [child_element.local_name for child_element in bibl_schema.iterchildren()] #names = [child_element.local_name for child_element in bibl_schema.iterchildren()]
names = ['author', 'biblScope', 'citedRange', 'date', 'edition', 'editor', 'idno', 'location', 'note', 'orgName', names = ['author', 'biblScope', 'citedRange', 'date', 'edition', 'editor', 'idno', 'location', 'note', 'orgName',
'publisher', 'pubPlace', 'ptr', 'series', 'span', 'title', 'volume', 'issue'] 'publisher', 'pubPlace', 'ptr', 'series', 'span', 'title', 'volume', 'issue']
for name in tqdm(names, desc="Processing TEI tags"): for name in tqdm(names, desc="Processing TEI tags"):
doc_node = root.find(f".//xs:element[@name='{name}']/xs:annotation/xs:documentation", namespaces=namespaces) doc_node = root.find(f".//xs:element[@name='{name}']/xs:annotation/xs:documentation", namespaces=namespaces)
if doc_node is not None: if doc_node is not None:
matches = re.search(r'^(.*)\[(.*)]$', doc_node.text) matches = re.search(r'^(.*)\[(.*)]$', doc_node.text)
if matches is None: continue if matches is None: continue
description = matches.group(1) description = matches.group(1)
doc_heading = matches.group(2) doc_heading = matches.group(2)
doc_urls = extract_headings_and_links(name, doc_heading, doc_base_url) doc_urls = extract_headings_and_links(name, doc_heading, doc_base_url)
data_list.append({'name': name, 'description': description, 'documentation': doc_heading, 'urls': doc_urls}) data_list.append({'name': name, 'description': description, 'documentation': doc_heading, 'urls': doc_urls})
return pd.DataFrame(data_list) return pd.DataFrame(data_list)
cache_file = "schema/tei/tei-tags-documentation.json" cache_file = "schema/tei/tei-tags-documentation.json"
if not os.path.isfile(cache_file): if not os.path.isfile(cache_file):
df = generate_tag_docs("schema/tei/tei_all.xsd") df = generate_tag_docs("schema/tei/tei_all.xsd")
df.to_json(cache_file, index=False, orient='records') df.to_json(cache_file, index=False, orient='records')
else: else:
df = pd.read_json(cache_file) df = pd.read_json(cache_file)
df df
``` ```
%% Output %% Output
name description \ name description \
0 author (author) in a bibliographic reference, contain... 0 author (author) in a bibliographic reference, contain...
1 biblScope (scope of bibliographic reference) defines the... 1 biblScope (scope of bibliographic reference) defines the...
2 citedRange (cited range) defines the range of cited conte... 2 citedRange (cited range) defines the range of cited conte...
3 date (date) contains a date in any format. 3 date (date) contains a date in any format.
4 edition (edition) describes the particularities of one... 4 edition (edition) describes the particularities of one...
5 editor contains a secondary statement of responsibili... 5 editor contains a secondary statement of responsibili...
6 location (location) defines the location of a place as ... 6 location (location) defines the location of a place as ...
7 note (note) contains a note or annotation. 7 note (note) contains a note or annotation.
8 publisher (publisher) provides the name of the organizat... 8 publisher (publisher) provides the name of the organizat...
9 pubPlace (publication place) contains the name of the p... 9 pubPlace (publication place) contains the name of the p...
10 series (series information) contains information abou... 10 series (series information) contains information abou...
11 span associates an interpretative annotation direct... 11 span associates an interpretative annotation direct...
12 title (title) contains a title for any kind of work. 12 title (title) contains a title for any kind of work.
documentation \ documentation \
0 3.12.2.2. Titles, Authors, and Editors 2.2.1. ... 0 3.12.2.2. Titles, Authors, and Editors 2.2.1. ...
1 3.12.2.5. Scopes and Ranges in Bibliographic C... 1 3.12.2.5. Scopes and Ranges in Bibliographic C...
2 3.12.2.5. Scopes and Ranges in Bibliographic C... 2 3.12.2.5. Scopes and Ranges in Bibliographic C...
3 3.6.4. Dates and Times 2.2.4. Publication, Dis... 3 3.6.4. Dates and Times 2.2.4. Publication, Dis...
4 2.2.2. The Edition Statement 4 2.2.2. The Edition Statement
5 3.12.2.2. Titles, Authors, and Editors 5 3.12.2.2. Titles, Authors, and Editors
6 14.3.4. Places 6 14.3.4. Places
7 3.9.1. Notes and Simple Annotation 2.2.6. The ... 7 3.9.1. Notes and Simple Annotation 2.2.6. The ...
8 3.12.2.4. Imprint, Size of a Document, and Rep... 8 3.12.2.4. Imprint, Size of a Document, and Rep...
9 3.12.2.4. Imprint, Size of a Document, and Rep... 9 3.12.2.4. Imprint, Size of a Document, and Rep...
10 3.12.2.1. Analytic, Monographic, and Series Le... 10 3.12.2.1. Analytic, Monographic, and Series Le...
11 18.3. Spans and Interpretations 11 18.3. Spans and Interpretations
12 3.12.2.2. Titles, Authors, and Editors 2.2.1. ... 12 3.12.2.2. Titles, Authors, and Editors 2.2.1. ...
urls urls
0 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 0 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
1 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/... 1 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/...
2 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/... 2 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/...
3 {'3.6.4': 'https://vault.tei-c.de/P5/3.0.0/doc... 3 {'3.6.4': 'https://vault.tei-c.de/P5/3.0.0/doc...
4 {'2.2.2': 'https://vault.tei-c.de/P5/3.0.0/doc... 4 {'2.2.2': 'https://vault.tei-c.de/P5/3.0.0/doc...
5 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 5 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
6 {'14.3.4': 'https://vault.tei-c.de/P5/3.0.0/do... 6 {'14.3.4': 'https://vault.tei-c.de/P5/3.0.0/do...
7 {'3.9.1': 'https://vault.tei-c.de/P5/3.0.0/doc... 7 {'3.9.1': 'https://vault.tei-c.de/P5/3.0.0/doc...
8 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/... 8 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/...
9 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/... 9 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/...
10 {'3.12.2.1': 'https://vault.tei-c.de/P5/3.0.0/... 10 {'3.12.2.1': 'https://vault.tei-c.de/P5/3.0.0/...
11 {'18.3': 'https://vault.tei-c.de/P5/3.0.0/doc/... 11 {'18.3': 'https://vault.tei-c.de/P5/3.0.0/doc/...
12 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 12 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
%% Cell type:markdown id:aaf43ee43bb6d4d tags: %% Cell type:markdown id:aaf43ee43bb6d4d tags:
## Convert Groundd Truth to TEI ## Convert Groundd Truth to TEI
%% Cell type:code id:b3ee84984b88f24a tags: %% Cell type:code id:b3ee84984b88f24a tags:
``` python ``` python
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import regex as re import regex as re
import glob import glob
import os import os
import xml.dom.minidom import xml.dom.minidom
import xmltodict
import json
def prettify(elem, indentation=" "):
"""Return a pretty-printed XML string for the Element."""
return xml.dom.minidom.parseString(ET.tostring(elem, 'unicode')).toprettyxml(indent=indentation)
def even_num_brackets(string: str): def even_num_brackets(string: str):
""" """
Simple heuristic to determine if string contains an even number of round and square brackets, Simple heuristic to determine if string contains an even number of round and square brackets,
so that if not, trailing or leading brackets will be removed. so that if not, trailing or leading brackets will be removed.
""" """
return ((string.endswith(")") and string.count(")") == string.count("(")) return ((string.endswith(")") and string.count(")") == string.count("("))
or (string.endswith("]") and string.count("]") == string.count("["))) or (string.endswith("]") and string.count("]") == string.count("[")))
def remove_punctuation(text): def remove_punctuation(text):
"""This removes leading and trailing punctuation using very simple rules for German and English""" """This removes leading and trailing punctuation using very simple rules for German and English"""
start, end = 0, len(text) start, end = 0, len(text)
while start < len(text) and re.match("\p{P}", text[start]) and text[end - 1]: while start < len(text) and re.match("\p{P}", text[start]) and text[end - 1]:
start += 1 start += 1
while end > start and re.match("\p{P}", text[end - 1]) and not even_num_brackets(text[start:end]) and text[end - 1] not in "?!": while end > start and re.match("\p{P}", text[end - 1]) and not even_num_brackets(text[start:end]) and text[end - 1] not in "?!":
end -= 1 end -= 1
return text[start:end].strip() return text[start:end].strip()
def clean_editor(text): def clean_editor(text):
text = re.sub(r'^in(:| )', '', remove_punctuation(text), flags=re.IGNORECASE) text = re.sub(r'^in(:| )', '', remove_punctuation(text), flags=re.IGNORECASE)
text = re.sub(r'\(?(hrsg\. v\.|hg\. v|hrsg\.|ed\.|eds\.)\)?', '', text, flags=re.IGNORECASE) text = re.sub(r'\(?(hrsg\. v\.|hg\. v|hrsg\.|ed\.|eds\.)\)?', '', text, flags=re.IGNORECASE)
return text return text
def clean_container(text): def clean_container(text):
return remove_punctuation(re.sub(r'^(in|aus|from)(:| )', '', text.strip(), flags=re.IGNORECASE)) return remove_punctuation(re.sub(r'^(in|aus|from)(:| )', '', text.strip(), flags=re.IGNORECASE))
def clean_pages(text): def clean_pages(text):
return remove_punctuation(re.sub(r'^(S\.|p\.|pp\.|ff?\.||seqq?\.)', '', text.strip(), flags=re.IGNORECASE)) return remove_punctuation(re.sub(r'^(S\.|p\.|pp\.|ff?\.||seqq?\.)', '', text.strip(), flags=re.IGNORECASE))
def extract_year(text): def extract_year(text):
m = re.search( r'[12][0-9]{3}', text) m = re.search( r'[12][0-9]{3}', text)
return m.group(0) if m else None return m.group(0) if m else None
def find_string(string, container): def find_string(string, container):
start = container.find(string) start = container.find(string)
if start > -1: if start > -1:
end = start + len(string) end = start + len(string)
return start, end return start, end
raise ValueError(f"Could not find '{string}' in '{container}'") raise ValueError(f"Could not find '{string}' in '{container}'")
def add_node(parent, tag, text="", attributes=None, clean_func=None, preserve=False): def add_node(parent, tag, text="", attributes=None, clean_func=None, preserve=False):
""" """
Adds a child node to the parent, optionally adding text and attributes. Adds a child node to the parent, optionally adding text and attributes.
If a clean_func is passed, the text is set after applying the function to it. If a clean_func is passed, the text is set after applying the function to it.
If the `preserve` flag is True, the removed preceding or trailing text is preserved in the xml, If the `preserve` flag is True, the removed preceding or trailing text is preserved in the xml,
outside of the node content outside of the node content
""" """
node = ET.SubElement(parent, tag, (attributes or {})) node = ET.SubElement(parent, tag, (attributes or {}))
if clean_func: if clean_func:
cleaned_text = clean_func(text) cleaned_text = clean_func(text)
if preserve: if preserve:
start, end = find_string(cleaned_text, text) start, end = find_string(cleaned_text, text)
prefix, suffix = text[:start], text[end:] prefix, suffix = text[:start], text[end:]
if prefix !="" and len(parent) > 0: if prefix !="" and len(parent) > 0:
parent[-1].tail = prefix parent[-1].tail = prefix
node.text = cleaned_text node.text = cleaned_text
if suffix != "": if suffix != "":
node.tail = suffix node.tail = suffix
else: else:
node.text = text node.text = text
return node return node
def create_tei_root(): def create_tei_root():
return ET.Element('TEI', { return ET.Element('TEI', {
'xmlns': "http://www.tei-c.org/ns/1.0" 'xmlns': "http://www.tei-c.org/ns/1.0"
}) })
def create_tei_header(tei_root, title): def create_tei_header(tei_root, title):
tei_header = add_node(tei_root, 'teiHeader') tei_header = add_node(tei_root, 'teiHeader')
file_desc = add_node(tei_header, 'fileDesc') file_desc = add_node(tei_header, 'fileDesc')
title_stmt = add_node(file_desc, 'titleStmt') title_stmt = add_node(file_desc, 'titleStmt')
add_node(title_stmt, 'title', title) add_node(title_stmt, 'title', title)
publication_stmt = add_node(file_desc, 'publicationStmt') publication_stmt = add_node(file_desc, 'publicationStmt')
add_node(publication_stmt, 'publisher', 'mpilhlt') add_node(publication_stmt, 'publisher', 'mpilhlt')
source_desc = add_node(file_desc, 'sourceDesc') source_desc = add_node(file_desc, 'sourceDesc')
add_node(source_desc, 'p', title) add_node(source_desc, 'p', title)
return tei_header return tei_header
def create_body(text_root): def create_body(text_root):
body = ET.SubElement(text_root, 'body') body = ET.SubElement(text_root, 'body')
add_node(body, 'p', 'The article text is not part of this document') add_node(body, 'p', 'The article text is not part of this document')
return body return body
def prettify(xml_string, indentation=" "):
"""Return a pretty-printed XML string"""
return xml.dom.minidom.parseString(xml_string).toprettyxml(indent=indentation)
def anystyle_to_tei(input_xml_path, id, preserve=False): def anystyle_to_tei(input_xml_path, id, preserve=False):
anystyle_root = ET.parse(input_xml_path).getroot() anystyle_root = ET.parse(input_xml_path).getroot()
tei_root = create_tei_root() tei_root = create_tei_root()
create_tei_header(tei_root, title=id) create_tei_header(tei_root, title=id)
text_root = add_node(tei_root, 'text') text_root = add_node(tei_root, 'text')
body = create_body(text_root) body = create_body(text_root)
# <listBibl> element for <bibl> elements that are not in footnotes, such as a bibliography # <listBibl> element for <bibl> elements that are not in footnotes, such as a bibliography
listBibl = add_node(body, 'listBibl') listBibl = add_node(body, 'listBibl')
# iterate over all sequences (=footnotes) and translate into TEI equivalents # iterate over all sequences (=footnotes) and translate into TEI equivalents
for sequence in anystyle_root.findall('sequence'): for sequence in anystyle_root.findall('sequence'):
# if the sequence contains a citation-number, create a new <note> to add <bibl> elements to # if the sequence contains a citation-number, create a new <note> to add <bibl> elements to
if (cn:= sequence.findall('citation-number')): if (cn:= sequence.findall('citation-number')):
attributes = { attributes = {
'n': cn[0].text, 'n': cn[0].text,
'place': 'bottom' 'place': 'bottom'
} }
node = add_node(text_root, 'note', attributes=attributes, clean_func=remove_punctuation, preserve=preserve) node = add_node(text_root, 'note', attributes=attributes, clean_func=remove_punctuation, preserve=preserve)
else: else:
# otherwise add to <listBibl> element # otherwise add to <listBibl> element
node = listBibl node = listBibl
bibl = None bibl = None
for child in sequence: for child in sequence:
tag = child.tag tag = child.tag
text = child.text text = child.text
if tag == "citation-number": continue # this has already been taken care of if tag == "citation-number": continue # this has already been taken care of
if (bibl is None # if we do not have a bibl element yet if (bibl is None # if we do not have a bibl element yet
or bibl.find(tag) and tag != "note" # or tag already exists in the current element or bibl.find(tag) and tag != "note" # or tag already exists in the current element
or tag in ['signal', 'legal-ref'] # or tag belongs to a specific groups that signal a separate reference or tag in ['signal', 'legal-ref'] # or tag belongs to a specific groups that signal a separate reference
or (tag in ["author", "editor", "authority"] and bibl.find('date'))): # or specific tags follow a date field or (tag in ["author", "editor", "authority"] and bibl.find('date'))): # or specific tags follow a date field
# then create a new bibl element # then create a new bibl element
bibl = ET.SubElement(node, 'bibl') bibl = ET.SubElement(node, 'bibl')
match tag: match tag:
case 'author': case 'author':
add_node(bibl, 'author', text, clean_func=remove_punctuation, preserve=preserve) add_node(bibl, 'author', text, clean_func=remove_punctuation, preserve=preserve)
case 'backref': case 'backref':
add_node(bibl, 'ref', text, clean_func=remove_punctuation, preserve=preserve) add_node(bibl, 'ref', text, clean_func=remove_punctuation, preserve=preserve)
case 'container-title': case 'container-title':
add_node(bibl, 'title', text, {'level': 'm'}, clean_func= clean_container, preserve=preserve) add_node(bibl, 'title', text, {'level': 'm'}, clean_func= clean_container, preserve=preserve)
case 'collection-title': case 'collection-title':
add_node(bibl, 'title', text, {'level': 's'}, clean_func= clean_container, preserve=preserve) add_node(bibl, 'title', text, {'level': 's'}, clean_func= clean_container, preserve=preserve)
case 'date': case 'date':
add_node(bibl, 'date', text, clean_func= extract_year, preserve=preserve) add_node(bibl, 'date', text, clean_func= extract_year, preserve=preserve)
case 'editor': case 'editor':
add_node(bibl, 'editor', text, clean_func=clean_editor, preserve=preserve) add_node(bibl, 'editor', text, clean_func=clean_editor, preserve=preserve)
case 'note': case 'note':
add_node(bibl, 'note', text) add_node(bibl, 'note', text)
case 'journal': case 'journal':
add_node(bibl, 'title', text, {'level': 'j'}, clean_func= clean_container, preserve=preserve) add_node(bibl, 'title', text, {'level': 'j'}, clean_func= clean_container, preserve=preserve)
case 'legal-ref': case 'legal-ref':
add_node(bibl, 'ref', text, {'type': 'legal'}, clean_func = remove_punctuation, preserve=preserve) add_node(bibl, 'ref', text, {'type': 'legal'}, clean_func = remove_punctuation, preserve=preserve)
case 'pages': case 'pages':
add_node(bibl, 'biblScope', text, {'unit': 'pp'}, clean_func= clean_pages, preserve=preserve) add_node(bibl, 'biblScope', text, {'unit': 'pp'}, clean_func= clean_pages, preserve=preserve)
case 'signal': case 'signal':
add_node(bibl, 'note', text, {'type': 'signal'}, clean_func=remove_punctuation, preserve=preserve) add_node(bibl, 'note', text, {'type': 'signal'}, clean_func=remove_punctuation, preserve=preserve)
case 'title': case 'title':
add_node(bibl, 'title', text, {'level': 'a'}, clean_func=remove_punctuation, preserve=preserve) add_node(bibl, 'title', text, {'level': 'a'}, clean_func=remove_punctuation, preserve=preserve)
case 'volume': case 'volume':
add_node(bibl, 'biblScope', text, {'unit': 'vol'}, clean_func = remove_punctuation, preserve=preserve) add_node(bibl, 'biblScope', text, {'unit': 'vol'}, clean_func = remove_punctuation, preserve=preserve)
return prettify(tei_root) return ET.tostring(tei_root, 'unicode')
for input_path in glob.glob('anystyle/*.xml'): for input_path in glob.glob('anystyle/*.xml'):
base_name = os.path.basename(input_path) base_name = os.path.basename(input_path)
id = os.path.splitext(base_name)[0] id = os.path.splitext(base_name)[0]
output_path = f'tei/{id}.xml' print(f'Converting {base_name} into TEI-XML and JSON...')
output_xml = anystyle_to_tei(input_path, id, preserve=True) output_xml = anystyle_to_tei(input_path, id, preserve=True)
print(f'Writing {output_path}') output_json = json.dumps(xmltodict.parse(output_xml), default=str)
with open(output_path, 'w', encoding='utf-8') as output_file: with open(f'tei/{id}.xml', 'w', encoding='utf-8') as f:
output_file.write(output_xml) f.write(prettify(output_xml))
with open(f'tei/{id}.json', 'w', encoding='utf-8') as f:
f.write(output_json)
``` ```
%% Output %% Output
Writing tei/10.1111_1467-6478.00057.xml Converting 10.1111_1467-6478.00057.xml into TEI-XML and JSON...
Writing tei/10.1111_1467-6478.00080.xml Converting 10.1111_1467-6478.00080.xml into TEI-XML and JSON...
Writing tei/10.1515_zfrs-1980-0103.xml Converting 10.1515_zfrs-1980-0103.xml into TEI-XML and JSON...
Writing tei/10.1515_zfrs-1980-0104.xml Converting 10.1515_zfrs-1980-0104.xml into TEI-XML and JSON...
%% Cell type:markdown id:b0a231dc7bdd8b01 tags: %% Cell type:markdown id:b0a231dc7bdd8b01 tags:
## Create LinkML schema from TEI XSD ## Create LinkML schema from TEI XSD
%% Cell type:markdown id:aa86435960e61937 tags: %% Cell type:markdown id:aa86435960e61937 tags:
......
...@@ -2,4 +2,5 @@ linkml ...@@ -2,4 +2,5 @@ linkml
spacy spacy
schema-automator schema-automator
quantulum3[classifier] quantulum3[classifier]
xmlschema xmlschema
\ No newline at end of file xmltodict
\ No newline at end of file
This diff is collapsed.
{"TEI": {"@xmlns": "http://www.tei-c.org/ns/1.0", "teiHeader": {"fileDesc": {"titleStmt": {"title": "10.1111_1467-6478.00080"}, "publicationStmt": {"publisher": "mpilhlt"}, "sourceDesc": {"p": "10.1111_1467-6478.00080"}}}, "text": {"body": {"p": "The article text is not part of this document", "listBibl": null}, "note": [{"@n": "1", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "For a contrary view, see"}, "author": "G. Jones", "title": [{"@level": "a", "#text": "\u201cTraditional\u201d Legal Scholarship: a Personal View"}, {"@level": "m", "#text": "What Are Law Schools For?"}], "editor": "P. Birks", "date": "1996", "biblScope": {"@unit": "pp", "#text": "14"}, "#text": ",\u2019,ed.)."}}, {"@n": "3", "@place": "bottom", "bibl": {"author": ["R. Goff", "A. Dicey"], "title": [{"@level": "a", "#text": "The Search for Principle"}, {"@level": "j", "#text": "Proceeedings of the British Academy"}, {"@level": "a", "#text": "Can English Law be taught at the Universities?"}], "date": ["1983", "1883"], "biblScope": [{"@unit": "vol", "#text": "169"}, {"@unit": "pp", "#text": "at 171"}, {"@unit": "pp", "#text": "20"}], "note": "This is an amplification of Dicey\u2019s remark that \u2018[b]y adequate study and careful thought whole departments of law can . . . be reduced to order and exhibited under the form of a few principles which sum up the effect of a hundred cases . . .\u2019.", "#text": ",\u2019),.,)."}}, {"@n": "4", "@place": "bottom", "bibl": {"author": "J. Smith", "title": {"@level": "a", "#text": "The Law of Contract"}, "date": "1989", "#text": ",)"}}, {"@n": "6", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "See, for example"}, "author": "D. Kennedy", "title": [{"@level": "a", "#text": "Form and substance in Private Law Ajudication"}, {"@level": "j", "#text": "Harvard Law Rev"}], "date": "1976", "biblScope": [{"@unit": "vol", "#text": "89"}, {"@unit": "pp", "#text": "1685"}], "#text": ",,\u2019).."}}, {"@n": "7", "@place": "bottom", "bibl": {"author": "B. Hepple", "title": [{"@level": "a", "#text": "The Renewal of the Liberal Law Degree"}, {"@level": "j", "#text": "Cambridge Law J"}], "date": "1996", "biblScope": {"@unit": "pp", "#text": "470, at 485 and 481"}, "#text": ",\u2019).."}}, {"@n": "8", "@place": "bottom", "bibl": {"author": "P.A. Thomas", "title": [{"@level": "a", "#text": "Introduction"}, {"@level": "m", "#text": "Socio-Legal Studies"}], "editor": "P.A. Thomas", "date": "1997", "biblScope": {"@unit": "pp", "#text": "19"}, "#text": ",\u2019,ed.)."}}, {"@n": "9", "@place": "bottom", "bibl": {"author": "R. Cotterrell", "title": {"@level": "a", "#text": "Law\u2019s Community"}, "date": "1995", "biblScope": {"@unit": "pp", "#text": "296"}, "#text": ",)."}}, {"@n": "10", "@place": "bottom", "bibl": {"note": "Socio-legal studies has been defined in many different ways. In this essay the term is taken to indicate the use of ideas \u2018from other disciplines primarily but not exclusively from within the social science and humanities fields\u2019.", "title": {"@level": "a", "#text": "Company Law"}, "editor": "Thomas", "ref": "op. cit., n. 8", "biblScope": {"@unit": "pp", "#text": "at p. 285"}, "#text": "\u2019,,."}}, {"@n": "11", "@place": "bottom", "bibl": [{"note": ["Some fail wholly. It is difficult to see any effect on academic legal education that resulted from", "The Jarratt report on universities produced for the Committee of Vice-Chancellors and Principals (CVCP), Report of the Steering Committee for Efficiency studies in Universities", "produced much comment but little action. Even those that are thought of as being a success are not wholly implemented. Despite Ormrod\u2019s recommendations no Institute of Profesional Legal Studies was set up and the universities and colleges of higher education did not take sole responsibility for vocational legal training"], "author": "Lady Marre\u2019s", "title": [{"@level": "a", "#text": "report A Time for Change"}, {"@level": "a", "#text": "Report of the Committee on Legal Education"}], "date": ["1988", "1988", "1971"], "#text": ").),(;"}, {"ref": {"@type": "legal", "#text": "Cmnd 4595)"}, "biblScope": {"@unit": "pp", "#text": "ch. 9, recs. 40 and 23"}, "note": "There were also other recommendations that were not implemented.", "title": {"@level": "a", "#text": "The Robbins report on higher education, Higher Education"}, "date": "1963", "#text": ").;"}, {"ref": {"@type": "legal", "#text": "Cmnd. 2154"}, "note": ["took it is axiomatic that \u2018courses of higher education should be available for all those who are qualified by ability and attainment to pursue them and wish to do so\u2019", "This has yet to happen."], "biblScope": {"@unit": "pp", "#text": "para. 31"}, "#text": "))."}]}, {"@n": "12", "@place": "bottom", "bibl": {"author": ["National Committee of Inquiry into Higher Education", "ACLEC", "ACLEC"], "title": [{"@level": "a", "#text": "Higher Education in the learning society"}, {"@level": "a", "#text": "First Report on Legal Education and Training"}], "date": ["1997", "1996"], "note": ["(the Dearing report);", "The Government\u2019s White Paper on further and higher education had not been published at the time of writing this essay."], "ref": "id", "biblScope": {"@unit": "pp", "#text": "para 4.6"}, "#text": ",),).,.,."}}, {"@n": "14", "@place": "bottom", "bibl": [{"note": "ACLEC\u2019s proposal is part of an historical process which has gradually seen English university law schools distance themselves from the legal professions and the legal professions propose decreasing degrees of control over the content of law degrees."}, {"note": {"@type": "signal", "#text": "See"}, "author": "A. Bradney and F. Cownie", "title": [{"@level": "a", "#text": "Working on the Chain Gang?"}, {"@level": "j", "#text": "Contemporary Issues in Law"}], "date": "1996", "biblScope": [{"@unit": "vol", "#text": "2"}, {"@unit": "pp", "#text": "15, at 24\u20136"}], "#text": "(,\u2019))."}]}, {"@n": "15", "@place": "bottom", "bibl": {"author": "J. MacFarlane, M. Jeeves, and A. Boon", "title": [{"@level": "a", "#text": "Education for Life or for Work?"}, {"@level": "j", "#text": "New Law J"}], "date": "1987", "biblScope": [{"@unit": "vol", "#text": "137"}, {"@unit": "pp", "#text": "835, at 836"}], "#text": ",\u2019).."}}, {"@n": "16", "@place": "bottom", "bibl": {"author": "T.H. Huxley", "title": [{"@level": "a", "#text": "Universities: Actual and Ideal"}, {"@level": "m", "#text": "T.H. Huxley, Collected Essays"}], "biblScope": [{"@unit": "vol", "#text": "Volume III"}, {"@unit": "pp", "#text": "215"}], "date": "1905", "#text": ",\u2019:)."}}, {"@n": "17", "@place": "bottom", "bibl": {"author": "J.S. Mill", "title": [{"@level": "a", "#text": "Inaugural address to the University of St Andrews"}, {"@level": "m", "#text": "Collected Work of John Stuart Mill: Volume"}], "biblScope": [{"@unit": "vol", "#text": "XXI"}, {"@unit": "pp", "#text": "218"}], "editor": "J.M. Robson", "date": "1984", "#text": ",\u2019in ,ed.)."}}, {"@n": "18", "@place": "bottom", "bibl": {"author": "Dearing", "ref": "op. cit., n. 12", "biblScope": {"@unit": "pp", "#text": "para. 9.32"}, "#text": ",,."}}, {"@n": "19", "@place": "bottom", "bibl": {"ref": "id", "biblScope": {"@unit": "pp", "#text": "para. 5.11"}, "#text": ".,."}}, {"@n": "20", "@place": "bottom", "bibl": {"author": "F.R. Leavis", "title": {"@level": "a", "#text": "Education and the University"}, "date": "1948", "biblScope": {"@unit": "vol", "#text": "28"}, "note": "Leavis\u2019s view was narrowly nationalistic. For \u2018centre\u2019 it would be better to substitute \u2018centres\u2019.", "#text": ",)."}}, {"@n": "21", "@place": "bottom", "bibl": {"note": [{"@type": "signal", "#text": "See, further"}, "ed. F. Cownie (forthcoming)."], "author": "A. Bradney", "title": [{"@level": "a", "#text": "Liberalising Legal Education"}, {"@level": "m", "#text": "The Law School: Global Issues, Local Questions"}], "#text": ",,\u2019,"}}, {"@n": "22", "@place": "bottom", "bibl": {"author": "P. Goodrich,", "title": [{"@level": "a", "#text": "Of Blackstone\u2019s Tower: Metephors of Distance and Histories of the English Law School"}, {"@level": "j", "#text": "S. Turow, One L"}], "ref": "in Birks, op. cit., n. 1", "biblScope": [{"@unit": "pp", "#text": "59. 23"}, {"@unit": "pp", "#text": "106"}], "date": "1977", "#text": "\u2018\u2019,p. )."}}, {"@n": "24", "@place": "bottom", "bibl": {"author": "O. Kahn-Freund", "title": [{"@level": "a", "#text": "Reflections on Legal Education"}, {"@level": "j", "#text": "Modern Law Rev"}], "date": "1966", "biblScope": [{"@unit": "vol", "#text": "29"}, {"@unit": "pp", "#text": "121, at 129"}], "#text": ",\u2019).."}}, {"@n": "25", "@place": "bottom", "bibl": {"note": "Kahn-Freund believed ... legal argument", "author": "Kahn-Freund", "ref": "id", "#text": ",.)."}}, {"@n": "26", "@place": "bottom", "bibl": {"author": "Leavis", "ref": "op. cit., n. 20", "biblScope": {"@unit": "pp", "#text": "120"}, "#text": ",,."}}, {"@n": "29", "@place": "bottom", "bibl": [{"note": "Leavis has, of course, been widely criticized for the cultural and gender assumptions that lie behind his selection of material to be studied."}, {"note": [{"@type": "signal", "#text": "See, for example"}, "Whatever the accuracy of these criticisms, they are criticisms of the application of the method rather than the method itself."], "author": "M. King", "title": {"@level": "a", "#text": "The New English Literatures"}, "date": "1980", "biblScope": {"@unit": "pp", "#text": "at 216\u201317"}, "#text": ",,).)"}]}, {"@n": "30", "@place": "bottom", "bibl": {"title": {"@level": "a", "#text": "Jurisprudence by Sir John Salmond"}, "editor": "G. Willliams (10th ed", "date": "1947", "biblScope": {"@unit": "pp", "#text": "at 256 and 257"}, "#text": ",.,)."}}, {"@n": "31", "@place": "bottom", "bibl": [{"note": "So much so that when other disciplines engage with law they must develop their own concepts to analyse law rather than rely on the concepts already developed in law."}, {"note": {"@type": "signal", "#text": "See, for example"}, "author": "E. Durkheim", "title": {"@level": "a", "#text": "The Division of Labour in Society"}, "date": "1933", "biblScope": {"@unit": "pp", "#text": "68"}, "#text": ",)."}]}, {"@n": "32", "@place": "bottom", "bibl": [{"author": "M. Le Brun and R. Johnstone", "title": {"@level": "a", "#text": "The Quiet Revolution: Improving Student Learning in Law"}, "date": "1994", "note": "65. On the effect on women students,", "#text": ",)"}, {"note": {"@type": "signal", "#text": "see"}, "title": [{"@level": "a", "#text": "Define and Empower: Women Students Consider Feminist Learning"}, {"@level": "j", "#text": "Law and Critique"}], "date": "1990", "biblScope": [{"@unit": "vol", "#text": "I"}, {"@unit": "pp", "#text": "47 at pp. 54\u201355"}], "#text": "\u2019)."}, {"note": {"@type": "signal", "#text": "For a survey of CLS and feminist literature on this general point, see"}, "author": "W. Conklin", "title": [{"@level": "a", "#text": "The Invisible Author of Legal Authority"}, {"@level": "j", "#text": "Law and Critique"}], "date": "1996", "biblScope": [{"@unit": "vol", "#text": "VII"}, {"@unit": "pp", "#text": "173 at pp. 173\u20136"}], "#text": ",\u2019)."}]}, {"@n": "33", "@place": "bottom", "bibl": {"author": "R. Collier", "title": [{"@level": "a", "#text": "Masculinism, Law and Law Teaching"}, {"@level": "j", "#text": "International J. of the Sociology of Law"}], "date": "1991", "biblScope": [{"@unit": "vol", "#text": "19"}, {"@unit": "pp", "#text": "427, at 429"}], "#text": ",\u2019)."}}, {"@n": "34", "@place": "bottom", "bibl": {"author": "P. McAuslan", "title": [{"@level": "a", "#text": "Administrative Law, Collective Consumption and Judicial Policy"}, {"@level": "j", "#text": "Modern Law Rev"}], "date": "1983", "biblScope": [{"@unit": "vol", "#text": "46"}, {"@unit": "pp", "#text": "1, at 8"}], "#text": ",\u2019).."}}, {"@n": "35", "@place": "bottom", "bibl": {"author": "Le Brun and Johnstone", "ref": "op. cit, n. 32", "biblScope": {"@unit": "pp", "#text": "71\u20135"}, "#text": ",,."}}, {"@n": "38", "@place": "bottom", "bibl": {"author": "Goodrich", "ref": "op. cit., n. 22", "#text": ",."}}, {"@n": "39", "@place": "bottom", "bibl": {"author": "P. Samuelson", "title": [{"@level": "a", "#text": "The Convergence of the Law School and the University"}, {"@level": "j", "#text": "The Am. Scholar"}], "date": "1975", "biblScope": [{"@unit": "vol", "#text": "44"}, {"@unit": "pp", "#text": "256, at 258"}], "#text": ",\u2019)."}}, {"@n": "40", "@place": "bottom", "bibl": {"author": "P. Harris and M. Jones", "title": [{"@level": "a", "#text": "A Survey of Law Schools in the United Kingdom, 1996"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1997", "biblScope": [{"@unit": "vol", "#text": "31"}, {"@unit": "pp", "#text": "38, at 46"}], "#text": "\u2019)."}}, {"@n": "41", "@place": "bottom", "bibl": {"author": "J. Wilson", "title": [{"@level": "a", "#text": "A third survey of university legal education"}, {"@level": "j", "#text": "Legal Studies"}], "date": "1993", "biblScope": [{"@unit": "vol", "#text": "13"}, {"@unit": "pp", "#text": "143, at 152"}], "#text": ",\u2019)."}}, {"@n": "42", "@place": "bottom", "bibl": [{"note": "Thus, for example, Harris and Jones reported that 59.2 per cent of all particpating institutions offered foriegn language tuition as part of their standard LLB programme."}, {"note": {"@type": "signal", "#text": "Harris and"}, "author": "Jones", "ref": "op. cit., n. 40", "biblScope": {"@unit": "pp", "#text": "at p. 54"}, "#text": "(,,)."}]}, {"@n": "43", "@place": "bottom", "bibl": {"author": "P. Leighton, T. Mortimer, and N. Whatley", "title": {"@level": "a", "#text": "Law Teachers: Lawyers or Academics?"}, "date": "1995", "#text": ",)"}}, {"@n": "34.", "@place": "bottom", "bibl": {"note": "This would include teaching both non-law degree students and sub-degree students.", "ref": "44 id", "biblScope": {"@unit": "pp", "#text": "p 35"}, "#text": ".,"}}, {"@n": "45", "@place": "bottom", "bibl": {"author": "L. Skwarok", "title": [{"@level": "a", "#text": "Business Law for Non-Lawyers: Setting the Stage for Teaching, Learning and Assessment at Hong Kong Polytechnic University"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1995", "biblScope": [{"@unit": "vol", "#text": "29"}, {"@unit": "pp", "#text": "189, at 189"}], "#text": ",\u2019)."}}, {"@n": "46", "@place": "bottom", "bibl": {"author": "N. Bastin", "title": [{"@level": "a", "#text": "Law, Law Staff and CNAA Business Studies Degree Courses"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1985", "biblScope": [{"@unit": "vol", "#text": "19"}, {"@unit": "pp", "#text": "12, at 13"}], "#text": ",\u2019)."}}, {"@n": "47", "@place": "bottom", "bibl": {"author": "A. Ridley", "title": [{"@level": "a", "#text": "Legal Skills for Non-Law Students: Added Value or Irrelevant Diversion?"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1994", "biblScope": [{"@unit": "vol", "#text": "28"}, {"@unit": "pp", "#text": "281, at 282"}], "#text": ",\u2019)."}}, {"@n": "48", "@place": "bottom", "bibl": {"author": "G. Cartan and T. Vilkinas", "title": [{"@level": "a", "#text": "Legal Literacy for Managers: The Role of the Educator"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1990", "biblScope": [{"@unit": "vol", "#text": "24"}, {"@unit": "pp", "#text": "246, at 248"}], "#text": ",\u2019)."}}, {"@n": "49", "@place": "bottom", "bibl": {"author": "Ridley", "ref": "op. cit., n. 47", "biblScope": {"@unit": "pp", "#text": "at p. 284"}, "#text": ",,."}}, {"@n": "50", "@place": "bottom", "bibl": {"note": "This, of course, is not always the case. For example, the BA Economics and Law degree at Leicester has a special course in each year given over to the consideration of the relationship between economics and law."}}, {"@n": "51", "@place": "bottom", "bibl": {"author": "P. Birks", "title": [{"@level": "a", "#text": "Short Cuts"}, {"@level": "m", "#text": "Pressing Problems in the Law"}], "editor": "P. Birks", "date": "1994", "biblScope": {"@unit": "pp", "#text": "10\u201324"}, "#text": ",\u2019,ed.)."}}, {"@n": "52", "@place": "bottom", "bibl": {"author": "Ridley", "ref": "op. cit., n. 47", "biblScope": {"@unit": "pp", "#text": "283"}, "#text": ",,."}}, {"@n": "53", "@place": "bottom", "bibl": {"author": "Cartan and Vilkinas", "ref": "op. cit., n. 48", "biblScope": {"@unit": "pp", "#text": "248"}, "#text": ",,."}}, {"@n": "54", "@place": "bottom", "bibl": {"author": "P. Harris", "title": [{"@level": "a", "#text": "Curriculum Development in Legal Studies"}, {"@level": "j", "#text": "The Law Teacher"}], "date": "1986", "biblScope": [{"@unit": "vol", "#text": "20"}, {"@unit": "pp", "#text": "110, at 112"}], "#text": ",\u2019)."}}, {"@n": "55", "@place": "bottom", "bibl": {"author": "Dearing", "ref": "op. cit., n. 12", "biblScope": {"@unit": "pp", "#text": "para 9.3"}, "#text": ",,."}}, {"@n": "57", "@place": "bottom", "bibl": {"author": "G. Steiner", "title": {"@level": "a", "#text": "Errata: An Examined Life"}, "date": "1997", "biblScope": {"@unit": "pp", "#text": "20"}, "#text": ",)."}}]}}}
\ No newline at end of file
{"TEI": {"@xmlns": "http://www.tei-c.org/ns/1.0", "teiHeader": {"fileDesc": {"titleStmt": {"title": "10.1515_zfrs-1980-0103"}, "publicationStmt": {"publisher": "mpilhlt"}, "sourceDesc": {"p": "10.1515_zfrs-1980-0103"}}}, "text": {"body": {"p": "The article text is not part of this document", "listBibl": {"bibl": [null, {"author": "Baumg\u00e4rtei, Gottfried", "date": "1976", "title": {"@level": "a", "#text": "Gleicher Zugang zum Recht f\u00fcr alle"}, "#text": ",:."}, {"author": ["Bender, Rolf und Rolf Schumacher", "Black, Donald"], "date": ["1980", "1973"], "title": [{"@level": "a", "#text": "Erfolgsbarrieren vor Gericht."}, {"@level": "a", "#text": "The Mobilization of Law"}, {"@level": "j", "#text": "Journal of Legal Studies"}], "biblScope": {"@unit": "vol", "#text": "2"}, "#text": ",: ,:,in: ."}, {"author": "Blankenburg, Erhard/Blankenburg, Viola/Morasch, Helmut", "date": "1972", "title": [{"@level": "a", "#text": "Der lange Weg in die Berufung"}, {"@level": "m", "#text": "Tatsachenforschung in der Justiz"}], "editor": "Bender, Rolf", "#text": ",:,(Hrsg.):."}, {"author": "Blankenburg, Erhard", "date": "1976", "title": [{"@level": "a", "#text": "Nichtkriminalisierung als Struktur und Routine"}, {"@level": "a", "#text": "Hans und G\u00fcnter Kaiser: Kriminologie und Strafverfahren"}], "editor": "G\u00f6ppinger", "#text": ",:,,."}, {"author": "Blankenburg, Erhard/Sessar, Klaus/Steffen, Wiebke", "date": "1978", "title": {"@level": "a", "#text": "Die Staatsanwaltschaft im Proze\u00df strafrechtlicher Sozialkontrolle"}, "#text": ",:."}, {"author": "Blankenburg, Erhard; Sch\u00f6nholz, Siegfried, unter Mitarbeit von Ralf Rogowski", "date": "1979", "title": {"@level": "a", "#text": "Zur Soziologie des Arbeitsgerichtsverfahrens"}, "#text": ",:."}, {"author": "Blankenburg, Erhard", "date": "1980", "title": [{"@level": "a", "#text": "Recht als gradualisiertes Konzept"}, {"@level": "m", "#text": "Alternative Rechtsformen und Alternativen zum Recht"}, {"@level": "s", "#text": "Jahrbuch f\u00fcr Rechtssoziologie und Rechtstheorie"}], "editor": "Blankenburg, Erhard; Klausa, Ekkehard und Hubert Rottleuthner", "biblScope": {"@unit": "vol", "#text": "Bd. 6. Opladen"}, "#text": ",:,(Hrsg.):,."}, {"author": ["Carlin, Jerome-, Jan Howard und Sheldon Messinger", "Richard /Lowy, Michael"], "date": ["1967", "1974"], "title": [{"@level": "a", "#text": "Civil Justice and the Poor"}, {"@level": "a", "#text": "Everday Disputes and Mediation in the United States: A Reply to Professor Felstiner"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 9"}, {"@unit": "pp", "#text": "675\u2014694"}], "#text": ",:.,/75;,,,."}, {"author": "Feest, Johannes/Blankenburg, Erhard", "date": "1972", "title": {"@level": "a", "#text": "Die Definitionsmacht der Polizei"}, "#text": ",:."}, {"author": "Felstiner, William L. F", "date": "1974", "title": [{"@level": "a", "#text": "Influences of Social Organization on Dispute processing"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 9"}, {"@unit": "pp", "#text": "63\u201494"}], "#text": ".,/75:,,,."}, {"author": "Felstiner, William L. F", "date": "1974", "title": [{"@level": "a", "#text": "Avoidance as Dispute Processing: An Elaboration"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 9"}, {"@unit": "pp", "#text": "695-706"}], "#text": ".,/75:,,,."}, {"author": "Galanter, Marc", "date": "1974", "title": [{"@level": "a", "#text": "Why the ,Haves* Come out Ahead: Speculations on the Limits of Legal Change"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 9"}, {"@unit": "pp", "#text": "95\u2014160"}], "#text": ",:,,,."}, {"author": ["Geiger, Theodor", "Neuwied. Gessner, Volkmar"], "date": ["1964", "1976"], "title": [{"@level": "a", "#text": "Vorstudien zu einer Soziologie des Rechts"}, {"@level": "a", "#text": "Recht und Konflikt"}], "#text": ",:.,:."}, {"author": "Hilden, Hartmut", "date": "1976", "title": {"@level": "a", "#text": "Rechtstatsachen im R\u00e4umungsstreit. Frankfurt/Main"}, "#text": ",:."}, {"author": "Johnson, Earl", "date": "1979", "title": [{"@level": "a", "#text": "Thinking about Access: A Preliminary Typology of Possible Strategies"}, {"@level": "m", "#text": "Access to Justice"}], "editor": ["Cappelletti, Mauro und Bryant Garth", "Milan und Alphen/ Rijn"], "biblScope": {"@unit": "vol", "#text": "Bd. III"}, "#text": ",;.(Hrsg.):,.."}, {"author": "Koch, Hartmut", "date": "1975", "title": {"@level": "a", "#text": "Das Gerichtsverfahren als Konfliktl\u00f6sungsproze\u00df \u2014 Einstellung von Kl\u00e4gern und Beklagten zu Mietprozessen"}, "note": "Diss.", "#text": ",:."}, {"author": "Luhmann, Niklas", "date": "1969", "title": {"@level": "a", "#text": "Legitimation durch Verfahren"}, "#text": ",:."}, {"author": "Luhmann, Niklas", "date": "1980", "title": [{"@level": "a", "#text": "Kommunikation \u00fcber Recht in Interaktionssystemen"}, {"@level": "m", "#text": "Alternative Rechtsformen und Alternativen zum Recht"}, {"@level": "s", "#text": "Jahrbuch f\u00fcr Rechtssoziologie und Rechtstheorie"}], "editor": "Blankenburg, Erhard; Klausa, Ekkehard und Hubert Rottleuthner", "biblScope": {"@unit": "vol", "#text": "Bd. 6. Opladen"}, "#text": ",:,(Hrsg.):,."}, {"author": "Reifner, Udo", "date": "1978", "title": {"@level": "a", "#text": "Rechtshilfebed\u00fcrfnis und Verrechtlichung am Beispiel einer Berliner Mieterinitiative"}, "biblScope": {"@unit": "pp", "#text": "IIM-dp/78\u201470"}, "#text": ",:,."}, {"author": "Reifner, Udo", "date": "1979", "title": {"@level": "a", "#text": "Gewerkschaftlicher Rechtsschutz \u2014 Geschichte des freigewerkschaftlichen Rechtsschutzes und der Rechtsberatung der Deutschen Arbeitsfront von 1894\u20141945"}, "biblScope": {"@unit": "pp", "#text": "IIM-dp/79\u2014104"}, "#text": ",:.."}, {"author": "Reifner, Udo und Irmela Gorges", "date": "1980", "title": [{"@level": "a", "#text": "Alternativen der Rechtsberatung: Dienstleistung, F\u00fcrsorge und kollektive Selbsthilfe"}, {"@level": "m", "#text": "Alternative Rechtsformen und Alternativen zum Recht"}, {"@level": "s", "#text": "Jahrbuch f\u00fcr Rechtssoziologie und Rechtstheorie"}], "editor": "Blankenburg, Erhard; Klausa, Ekkehard und Hubert Rottleuthner", "biblScope": {"@unit": "vol", "#text": "Bd. 6. Opladen"}, "#text": ",;,(Hrsg.):,."}, {"author": "Sarat", "date": "1976", "title": [{"@level": "a", "#text": "Alternatives in Dispute Processing in a Small Claim Court"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 10"}, {"@unit": "pp", "#text": "339\u2014375"}], "#text": ",:,,,."}, {"author": "Sch\u00f6nholz, Siegfried", "date": "1980", "title": [{"@level": "a", "#text": "Arbeitsplatzsicherung oder Kompensation - Rechtliche Formen des Bestandsschutzes im Vergleich"}, {"@level": "m", "#text": "Arbeitslosigkeit und Recht"}], "editor": "Vereinigung f\u00fcr Rechtssoziologie", "#text": ",:(Hrsg.):."}, {"author": "Steinbach, E", "date": "1979", "title": {"@level": "a", "#text": "GMD-Bericht, Manuskript. Gesellschaft f\u00fcr Mathematik und Datenverarbeitung"}, "#text": ".,:."}, {"author": "Wanner, Craig", "date": "1975", "title": [{"@level": "a", "#text": "The Public Ordering of Private Cases; Winning Civil Court Cases"}, {"@level": "j", "#text": "Law and Society Review"}], "biblScope": [{"@unit": "vol", "#text": "vol. 9"}, {"@unit": "pp", "#text": "293-306"}], "#text": ",:,,,."}]}}, "note": [{"@n": "1", "@place": "bottom", "bibl": {"author": "Geiger", "date": "1964", "biblScope": {"@unit": "pp", "#text": "insbesondere S. 65\u201483"}, "#text": ",."}}, {"@n": "2", "@place": "bottom", "bibl": [{"note": {"@type": "signal", "#text": "Vgl"}, "author": "Feest/Blankenburg", "date": "1972", "#text": ".,."}, {"note": [{"@type": "signal", "#text": "Die Konsequenz einer gr\u00f6\u00dferen Dunkelziffer bei den von der Polizei selbst entdeckten Straftaten entwickle"}, "ausf\u00fchrlicher in meinem Beitrag \u00fcber"], "author": "ich", "title": {"@level": "a", "#text": "Nichtkriminalisierung als Struktur und Routine"}, "date": "1976", "#text": "',."}]}, {"@n": "3", "@place": "bottom", "bibl": [{"note": [{"@type": "signal", "#text": "Angaben aus einer Befragung von"}, "zur", "Manuskript"], "author": "Peter MacNaughton-Smith und Richard Rosellen", "title": {"@level": "a", "#text": "Bereitschaft zur Anzeigeerstattung"}, "date": "1978", "#text": "'."}, {"note": [{"@type": "signal", "#text": "Der ausf\u00fchrliche Forschungsbericht von"}, "erscheint in K\u00fcrze unter dem Titel"], "author": "Richard Rosellen", "title": {"@level": "a", "#text": "Private Verbrechenskontrolle \u2014 eine empirische Untersuchung zur Anzeigeerstattung"}, "date": "1980", "#text": "',."}]}, {"@n": "4", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Vgl"}, "author": "Blankenburg/Sessar/Steffen", "date": "1978", "biblScope": {"@unit": "pp", "#text": "66-85"}, "#text": ".,,."}}, {"@n": "5", "@place": "bottom", "bibl": {"author": "Black", "date": "1973", "biblScope": {"@unit": "pp", "#text": "125 ff"}, "#text": ",."}}, {"@n": "6", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Zur h\u00f6heren Wahrscheinlichkeit der Normierung von Verhalten in weniger komplexen Beziehungen vgl. die Konflikttheorie von"}, "author": "Gessner", "date": "1976", "biblScope": {"@unit": "pp", "#text": "insbesondere S. 170\u2014183"}, "#text": ",."}}, {"@n": "7", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Zum Konzept der 'Thematisierung von Recht' vgl"}, "author": "Luhmann", "date": "1980", "biblScope": {"@unit": "pp", "#text": "99\u2014112"}, "#text": ".,."}}, {"@n": "8", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Ausf\u00fchrlicher bei"}, "author": "Gessner", "date": "1976"}}, {"@n": "9", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Vgl"}, "author": "Sch\u00f6nholz", "date": "1980", "#text": ".."}}, {"@n": "10", "@place": "bottom", "bibl": {"author": "Blankenburg/Sch\u00f6nholz; Rogowski", "date": "1979", "biblScope": {"@unit": "pp", "#text": "64 ff"}, "#text": ",."}}, {"@n": "11", "@place": "bottom", "bibl": {"author": "Hilden", "date": "1976", "biblScope": {"@unit": "pp", "#text": "64 ff"}, "#text": ",."}}, {"@n": "12", "@place": "bottom", "bibl": {"author": "Koch", "date": "1975", "biblScope": {"@unit": "pp", "#text": "75"}, "note": "der allerdings nur streitige Urteile und Vergleiche untersucht hat.", "#text": ",,"}}, {"@n": "13", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "F\u00fcr Angaben der Z\u00e4hlkartenstatistik f\u00fcr die Familiengerichte siehe"}, "author": "Statistisches Bundesamt Wiesbaden", "title": {"@level": "a", "#text": "Fachserie 10 (Rechtspflege) Reihe 2.1, Tabelle 10"}, "date": "1978", "#text": ":,,."}}, {"@n": "14", "@place": "bottom", "bibl": {"author": "Blankenburg/Sch\u00f6nholz; Rogowski", "date": "1979", "biblScope": {"@unit": "pp", "#text": "78 ff"}, "#text": ",."}}, {"@n": "15", "@place": "bottom", "bibl": {"note": "Steinbach 1979 hat in einer Erhebung von 1144 Amtsgerichtsprozessen in der Bundesrepublik ohne Berlin in den Jahren 1974\u20141976 ein Verh\u00e4ltnis von 1 R\u00e4umungsklage je 1,2 Forderungsklagen, in Berlin allerdings von 1 R\u00e4umungsklage je 0,12 Forderungsklagen ermittelt. Im folgenden auch als GMD-Erhebung zitiert."}}, {"@n": "16", "@place": "bottom", "bibl": {"author": "Johnson", "date": "1979", "note": "berichtet von dem erfolgreichen Versuch einer Unfall-Schadensregulierung ohne Ber\u00fccksichtigung einer Schuldzuschreibung in Neuseeland (no fault accident compensation),", "biblScope": {"@unit": "pp", "#text": "90 ff"}, "#text": "."}}, {"@n": "17", "@place": "bottom", "bibl": {"author": ["Steinbach", "Blankenburg/Blankenburg/Morasch"], "date": ["1979", "1972"], "biblScope": [{"@unit": "pp", "#text": "66 ff"}, {"@unit": "pp", "#text": "82 ff"}], "#text": ",.;,."}}, {"@n": "18", "@place": "bottom", "bibl": {"title": {"@level": "a", "#text": "Projektbericht ,Rechtshilfebed\u00fcrfnisse sozial Schwacher"}, "author": "Blankenburg/Gorges/Reifner; Ticmann).", "note": ["Befragt wurden im Januar bis M\u00e4rz 1979 je eine Person in 835 Haushalten Westberlins. Ver\u00f6ffentlichung ist vorgesehen f\u00fcr", "Quelle: Eigene Befragung in West-Berlin 1979, Zufallsauswahl aus allen Haushalten mit Deutschen. Mehrfachnennungen, % jeweils bezogen auf Personen, die im jeweiligen Bereich ein Problem nennen."], "date": "1980", "#text": "*, ."}}, {"@n": "19", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Explizit bei"}, "author": "Baumg\u00e4rtei", "date": "1976", "biblScope": {"@unit": "pp", "#text": "113-128"}, "#text": ",."}}, {"@n": "20", "@place": "bottom", "bibl": {"note": "Laut einer GMD-Erhebung aus der Z\u00e4hlkartenstatistik wurde in Baden-W\u00fcrttemberg 1978 in"}}, {"@n": "21", "@place": "bottom", "bibl": {"title": {"@level": "a", "#text": "Projektbericht Rechtsschutzversicherung"}, "author": "Blankenburg; Fiedler", "note": "Ver\u00f6ffentlichung voraussichtlich", "date": "1980", "#text": "*.),."}}, {"@n": "22", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Vgl. auch"}, "author": "Reifner/Gorges", "date": "1980", "#text": "."}}, {"@n": "23", "@place": "bottom", "bibl": {"author": "Reifner", "date": "1979", "#text": "."}}, {"@n": "24", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Klassisch bei"}, "author": "Carlin/Howard/Messinger", "date": "1967", "#text": "."}}, {"@n": "25", "@place": "bottom", "bibl": {"note": [{"@type": "signal", "#text": "Grunds\u00e4tzlich vgl. hierzu den klassischen Beitrag von"}, "Die gr\u00f6sseren Chancen von Firmen, insbesondere bei der gro\u00dfen Zahl von vorstreitigen Erledigungen zeigt"], "author": ["Galanter", "Sarat"], "date": ["1974", "1976"], "biblScope": [{"@unit": "pp", "#text": "95\u2014160"}, {"@unit": "pp", "#text": "339-375"}], "#text": ",.,."}}, {"@n": "26", "@place": "bottom", "bibl": {"author": "Bender/Schumacher", "date": "1980", "biblScope": {"@unit": "pp", "#text": "138"}, "#text": ",."}}, {"@n": "27", "@place": "bottom", "bibl": [{"author": "Steinbach", "date": "1979", "biblScope": {"@unit": "pp", "#text": "96 ff"}, "#text": ",,"}, {"note": {"@type": "signal", "#text": "vgl. auch"}, "author": "Blankenburg/Blankenburg/Morasch", "date": "1972", "biblScope": {"@unit": "pp", "#text": "89, Fn. 17"}, "#text": ",,"}]}, {"@n": "28", "@place": "bottom", "bibl": {"author": "Reifner", "date": "1978", "#text": "."}}, {"@n": "29", "@place": "bottom", "bibl": {"author": "Blankenburg/Sch\u00f6nholz; Rogowski", "date": "1979", "biblScope": {"@unit": "pp", "#text": "102 ff"}, "#text": ",."}}, {"@n": "30", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "Vgl. zum Verrechtlichungsbegriff meinen Beitrag \u00fcber:"}, "title": {"@level": "a", "#text": "Recht als gradualisiertes Konzept"}, "date": "1980", "biblScope": {"@unit": "pp", "#text": "83\u201498"}, "#text": ",."}}, {"@n": "31", "@place": "bottom", "bibl": {"author": ["Steinbach", "Bender/Schumacher"], "date": ["1979", "1980"], "biblScope": [{"@unit": "pp", "#text": "35"}, {"@unit": "pp", "#text": "24 und S. 49"}], "#text": ",;,."}}, {"@n": "32", "@place": "bottom", "bibl": [{"author": "Wanner", "date": "1975", "biblScope": {"@unit": "pp", "#text": "293\u2014306"}, "note": "hebt dies deutlich hervor,", "#text": ",S."}, {"note": {"@type": "signal", "#text": "ebenso"}, "author": "Bender/Schumacher", "date": "1980", "biblScope": {"@unit": "pp", "#text": "72 ff"}, "#text": ", .;"}, {"note": {"@type": "signal", "#text": "sowie"}, "author": ["Galanter", "Sarat"], "date": ["1974", "1976"], "#text": "; ."}]}, {"@n": "33", "@place": "bottom", "bibl": {"author": "Blankenburg/Sch\u00f6nholz; Rogowski", "date": "1979", "biblScope": {"@unit": "pp", "#text": "78 ff"}, "#text": ",."}}, {"@n": "34", "@place": "bottom", "bibl": {"ref": "Ebenda", "biblScope": {"@unit": "pp", "#text": "138-186"}, "#text": ",."}}, {"@n": "35", "@place": "bottom", "bibl": {"author": "Luhmann", "date": "1969", "#text": "."}}, {"@n": "36", "@place": "bottom", "bibl": {"note": {"@type": "signal", "#text": "F\u00fcr eine \u00fcberaus positive Bewertung des .Vermeidens1 vgl"}, "author": "Felstiner und Danzig/Lowy", "title": {"@level": "j", "#text": "Law and Society Review"}, "biblScope": {"@unit": "vol", "#text": "vol. 9"}, "date": "1974", "#text": ".,,/75."}}]}}}
\ No newline at end of file
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment