Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F6000075
NTriplesRdfWriter.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
NTriplesRdfWriter.php
View Options
<?php
namespace
Wikimedia\Purtle
;
/**
* @license GPL-2.0-or-later
* @author Daniel Kinzler
*/
class
NTriplesRdfWriter
extends
N3RdfWriterBase
{
/**
* @param string $role
* @param BNodeLabeler|null $labeler
* @param N3Quoter|null $quoter
*/
public
function
__construct
(
$role
=
parent
::
DOCUMENT_ROLE
,
?
BNodeLabeler
$labeler
=
null
,
?
N3Quoter
$quoter
=
null
)
{
parent
::
__construct
(
$role
,
$labeler
,
$quoter
);
// NOTE: The RDF 1.1 spec of N-Triples allows full UTF-8, so escaping would not be required.
// However, as of 2015, many consumers of N-Triples still expect non-ASCII characters
// to be escaped.
// NOTE: if this is changed, getMimeType must be changed accordingly.
$this
->
quoter
->
setEscapeUnicode
(
true
);
$this
->
transitionTable
[
self
::
STATE_OBJECT
]
=
[
self
::
STATE_DOCUMENT
=>
" .
\n
"
,
self
::
STATE_SUBJECT
=>
" .
\n
"
,
self
::
STATE_PREDICATE
=>
" .
\n
"
,
self
::
STATE_OBJECT
=>
" .
\n
"
,
];
}
/**
* @inheritDoc
*/
protected
function
expandSubject
(
&
$base
,
&
$local
)
{
$this
->
expandQName
(
$base
,
$local
);
}
/**
* @inheritDoc
*/
protected
function
writeSubject
(
$base
,
$local
=
null
)
{
// noop
}
/**
* @inheritDoc
*/
protected
function
expandPredicate
(
&
$base
,
&
$local
)
{
$this
->
expandShorthand
(
$base
,
$local
);
// e.g. ( 'a', null ) => ( 'rdf', 'type' )
$this
->
expandQName
(
$base
,
$local
);
// e.g. ( 'acme', 'foo' ) => ( 'http://acme.test/foo', null )
}
/**
* @inheritDoc
*/
protected
function
writePredicate
(
$base
,
$local
=
null
)
{
// noop
}
private
function
writeSubjectAndObject
()
{
$this
->
writeRef
(
$this
->
currentSubject
[
0
],
$this
->
currentSubject
[
1
]
);
$this
->
write
(
' '
);
$this
->
writeRef
(
$this
->
currentPredicate
[
0
],
$this
->
currentPredicate
[
1
]
);
}
/**
* @inheritDoc
*/
protected
function
expandResource
(
&
$base
,
&
$local
)
{
$this
->
expandQName
(
$base
,
$local
);
}
/**
* @inheritDoc
*/
protected
function
expandType
(
&
$base
,
&
$local
)
{
$this
->
expandQName
(
$base
,
$local
);
}
/**
* @inheritDoc
*/
protected
function
writeResource
(
$base
,
$local
=
null
)
{
$this
->
writeSubjectAndObject
();
$this
->
write
(
' '
);
$this
->
writeRef
(
$base
,
$local
);
}
/**
* @inheritDoc
*/
protected
function
writeText
(
$text
,
$language
=
null
)
{
$this
->
writeSubjectAndObject
();
$this
->
write
(
' '
);
parent
::
writeText
(
$text
,
$language
);
}
/**
* @param string $value
* @param string|null $typeBase
* @param string|null $typeLocal
*/
protected
function
writeValue
(
$value
,
$typeBase
,
$typeLocal
=
null
)
{
$this
->
writeSubjectAndObject
();
$this
->
write
(
' '
);
parent
::
writeValue
(
$value
,
$typeBase
,
$typeLocal
);
}
/**
* @param string $role
* @param BNodeLabeler $labeler
*
* @return RdfWriterBase
*/
protected
function
newSubWriter
(
$role
,
BNodeLabeler
$labeler
)
{
$writer
=
new
self
(
$role
,
$labeler
,
$this
->
quoter
);
return
$writer
;
}
/**
* @return string a MIME type
*/
public
function
getMimeType
()
{
// NOTE: Add charset=UTF-8 if and when the constructor configures $this->quoter
// to write utf-8.
return
'application/n-triples'
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Oct 4 2026, 05:52 (5 w, 18 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
96/d4/8ee9cc06c839667772fcd6c45754
Default Alt Text
NTriplesRdfWriter.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment